可以评估以下形式的字符串,以便它等同于相同的“文字”表达式。
实施例的数据和代码
df.name = data.frame(col1 = 1:5, col2 = LETTERS[seq(1:5)], col3 = letters[seq(1:5)], stringsAsFactors = FALSE)
col.name = "col2"
row.num = "4"
var1 = str_c("df.name$", col.name,"[",row.num,"]")
> var1
[1] "df.name$col2[4]"
字面按预期工作
> df.name$col2[4]
[1] D
的get()是不等价
get(var1)
Error in get(var1) : object 'df.name$col2[4]' not found
这种形式的get() “作品”,但不解决问题
get("df.name")$col2[4]
[1] D
其他职位我试过eval(parse())和eval(parse(text()))没有成功。
我试图创建一个函数,将搜索(子集)df.name
使用col.name
传递给函数。我想避免为每个列名写一个单独的函数,尽管这样可以工作,因为我可以将df.name$col2[row.num]
编码为“文字”。
的示例代码应该所示的row.num类型数字/整数,即row.num = 4
将字符串解析为字符串永远不会是答案。 'df.name [[col.name]] [as.numeric(row.num)]'是你的可能性。但我想你应该问问自己,你是如何以一个行号的字符表示结束并从那里开始的。 –
近似重复:http://stackoverflow.com/questions/39560780/how-do-i-refer-to-a-data-frame-element-with-strings-in-r/39563674#39563674 –
如果你真的需要这样做,'eval(parse(text = var1))'应该可以工作(它对我有用)。但@ RichScriven的解决方案(但用'get(df.name)'而不是'df.name')应该可以工作。 –