在substr()函数中使用ls()函数出现问题

3

我需要一个所有对象名称的列表或向量,最后一个字符被切除。 例如:

# if i have two objects (ob1 and other1)
ls()
##"ob1" "other1" 
# I want "ob" "other"

我正在尝试在循环中使用substr()ls(),但是得到的是一个空字符向量("")。暂时忽略循环,我该怎么做才能使substr()内正确地处理ls()[1]

ob1 <– NULL
substr(ls()[1],1,length(ls()[1])-1)
##[1] ""

substr(paste(ls()[1]),1,length(ls()[1])-1)
##[1] ""

substr(toString(ls()[1]),1,length(ls()[1])-1)
##[1] ""

substr(as.character(ls()[1]),1,length(ls()[1])-1)
##[1] ""
2个回答

2
你可以使用子函数来从字符串中删除最后一个字符。
> x <- c("ob1", "other1")
> sub(".$", "", x)
[1] "ob"    "other"

对于最后2个字符,您可以使用sub(".{2}$","",x),同样增加花括号中的数字以从末尾删除字符数。我认为您需要在上面的代码中使用ls()而不是x - Avinash Raj

1
您正在使用length()而不是nchar()。更改后,一切都会正常。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接