我有兴趣为列表元素分配名称。为此,我执行以下代码:
file_names <- gsub("\\..*", "", doc_csv_names)
print(file_names)
"201409" "201412" "201504" "201507" "201510" "201511" "201604" "201707"
names(docs_data) <- file_names
在这种情况下,列表元素的名称以``出现。
docs_data$`201409`
However, in this case the name of the list element appears in the following way:
names(docs_data) <- paste("name", 1:8, sep = "")
docs_data$name1
gsub()
结果以接收没有引号的后一种命名模式? gsub()
和paste ()
似乎产生相同的class ()
对象。有什么区别?答案 0 :(得分:1)
gsub和粘贴都返回字符对象。它们是不同的,因为它们是完全不同的功能,您似乎根据它们的用法知道这些功能(gsub用所需的字符串输出替换模式的实例,而粘贴只是...粘贴)。
至于为什么要引用报价,这与gsub无关,而与以数字命名变量/列无关。确实,尝试
names(docs_data) <- paste(1:8)
,调用命名模式时您将意识到同样的问题。它基本上与以下事实有关:R不想混淆数字是真正的数字还是变量,因为这会造成混乱(1怎么能同时引用变量和数字1?),所以在这种情况下,将数字1更改为字符“ 1”,可以为其指定名称。例如,请注意
> 1 <- 3
Error in 1 <- 3 : invalid (do_set) left-hand side to assignment
> "1" <- 3 #no problem!
所以R基本上正在为您更正此错误!使用字符命名时,这不是问题。最后,一个简单的解决方法:只需在命名模式的数字前面添加一个字符,就可以在不带引号的情况下调用它们。例如:
file_names <- paste("file_",gsub("\\..*", "", doc_csv_names),sep="")
应该做到这一点(或者只要将“ file_”更改为您想要的任何内容,只要它不为空,原因就是您剩下的数字和相同的问题)!