我正在使用一长串数据框。
以下是数据框的一个简单假设示例:
DFrame<-data.frame(c(1,0),c("Yes","No"))
colnames(DFrame)<-c("ColOne","ColTwo")
我正在尝试使用粘贴功能检索数据框的指定列。
get(paste("DFrame","$","ColTwo",sep=""))
尝试检索指定列时,get函数返回以下错误:
get中的错误(粘贴(“DFrame”,“$”,“ColTwo”,sep =“”)):找不到对象'DFrame $ ColTwo'
当我输入数据框DFrame$ColTwo
的构造名称时,它返回第二列的所需输出。
如果我重新构建没有'$'符号的示例,那么我会从get函数中获得所需的答案。例如,代码产生2:
在这里输入代码 Ans&lt; - 2
get(paste("An","s",sep=""))
[1] 2
我正在寻找相同的预期结果,但努力克服无法找到对象的错误。
我还尝试使用以下格式,但列名中的引号会破坏粘贴功能:
paste("DFrame","[,"ColTwo"]",sep="")
非常感谢您的投入, 亲切的问候
答案 0 :(得分:1)
停止尝试完全使用paste
和get
。
有一个列表(比如数据框)的全部意义在于您可以使用名称来引用它们:
DFrame<-data.frame(c(1,0),c("Yes","No"))
colnames(DFrame)<-c("ColOne","ColTwo")
#A list of data frames
l <- list(DFrame,DFrame)
#The data frames in the list can have names
names(l) <- c("DF1",'DF2')
# Now you just use `[[`
> l[["DF1"]][["ColOne"]]
[1] 1 0
> l[["DF1"]][["ColTwo"]]
[1] Yes No
Levels: No Yes
如果必须,您可以使用paste
构建[[
内传递的索引。
答案 1 :(得分:0)
您可以使用以下语法执行此操作:
get("DFrame")[,"ColTwo"]
您可以在这两个字符串中使用paste(),例如:
get(paste("D", "Frame", sep=""))[,paste("Col", "Two", sep="")]
编辑:尽管有人在没有发表评论的情况下贬低了这个答案,但这正是原始海报所要求的。如果你觉得它没有或在某种程度上是危险的,我会鼓励你发表评论。