将名称分配给没有标题引号的列表元素

时间:2018-09-27 13:34:22

标签: r dataset

我有兴趣为列表元素分配名称。为此,我执行以下代码:

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 ()对象。有什么区别?

1 个答案:

答案 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_”更改为您想要的任何内容,只要它不为空,原因就是您剩下的数字和相同的问题)!