我想调用一个包含26个元素的列表,一个接一个地,以及它的名称,即:
list$'91469_1'
我在stringr包中试过了paste0和其他函数:
name<-paste0("'",as.character(d$bicho[i]),"'")
> name
[1] "'91469_1'"
> sQuote(d$bicho[i])
[1] "‘91469_1’"
我的问题有解决办法吗?
答案 0 :(得分:2)
首先,列表元素的名称中通常没有单引号或双引号。它们在控制台上显示双引号,这是名称和字符向量的print方法的操作。如果要更改它们的显示方式,则需要重写打印方法。
如果您已对paste
或paste0
采取了对您希望用作列表,向量或数据框的索引的字符向量元素添加单引号的操作,那么您需要使用反斜杠或反引号,但在第一个示例中,正在使用的名称中没有单引号(或反引号)。单引号表示向解释器表示由91469-1
形成的令牌被解释为原子字符而不是要查找的名称(或者更糟糕的是要计算的值)。
mylist <- list()
mylist$'91469_1' <- 42
> mylist
$`91469_1`
[1] 42
> nchar(names(mylist))
[1] 7
print方法在该元素名称周围添加反引号的唯一原因是名称不应该以小数开头。不要用#34;正确的&#34; R名称以alpha:
开头> mylist$'m91469_1' <- 46
> mylist
$`91469_1`
[1] 42
$m91469_1
[1] 46