可以評估以下形式的字符串,以便它等同於相同的「文字」表達式。
實施例的數據和代碼
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')應該可以工作。 –