粘贴功能构建现有数据框名称并在R中进行评估

时间:2016-01-25 18:18:54

标签: r dataframe

我正在使用一长串数据框。

以下是数据框的一个简单假设示例:

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="")

非常感谢您的投入, 亲切的问候

2 个答案:

答案 0 :(得分:1)

停止尝试完全使用pasteget

有一个列表(比如数据框)的全部意义在于您可以使用名称来引用它们:

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="")]

编辑:尽管有人在没有发表评论的情况下贬低了这个答案,但这正是原始海报所要求的。如果你觉得它没有或在某种程度上是危险的,我会鼓励你发表评论。