我想知道是否可以通過替換命令將取消引用傳遞給表達式的字符串。在R的替代命令中取消引用字符串
具體而言,我使用dplyr過濾和從數據幀中選擇:
> w
subject sex response
1 1 M 19.08
2 2 M 16.46
... ... ... ...
6 6 M 23.60
7 7 M 23.96
8 8 F 22.48
9 9 F 25.79
... ... ... ...
16 16 F 26.66
下面產生所需的結果:
> w %.% filter(sex == "M") %.% select(response)
response
1 19.08
2 16.46
3 22.81
4 18.62
5 18.75
6 23.60
7 23.96
但我想這樣做以更一般的辦法。由於字符串「sex」用引號引起來,因此以下不會產生所需的結果。
代用品(w%以下。%濾波器(Y == 「M」),則列表(Y =膏(名稱(w)的[2])))
w %.% filter("sex" == "M")
> eval(substitute(w %.% filter(y == "M"), list(y = paste(names(w)[2]))))
[1] subject sex response
<0 rows> (or 0-length row.names)
我可以總是請執行以下操作:
eval(parse(text = paste("w %.% filter(", names(w)[2], " == 'M')")))
但是,看起來有點笨拙。
有沒有更優雅的方式來做到這一點?最後,我想把它包裝在一個函數中,使其更加通用。
任何幫助/建議將不勝感激。
親切的問候,
斯特凡
類似的Q&A [**這裏**]( http://stackoverflow.com/questions/22005419/dplyr-without-hard-coding-the-variable-names/22012451#22012451) – Henrik
嘗試'as.nam e()' – hadley
謝謝,我不知道'as.name()',直到akrun在他的回答中使用它。 – Stefan