मैं जानना चाहता हूं कि को विकल्प कमांड के माध्यम से एक अभिव्यक्ति में पारित एक स्ट्रिंग को संभव है या नहीं।आर के विकल्प कमांड में Unquote स्ट्रिंग
विशेष रूप से, मैं 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
लेकिन मैं एक अधिक सामान्य में ऐसा करना चाहते हैं मार्ग। निम्नलिखित आवश्यक परिणाम उत्पन्न नहीं करता है क्योंकि स्ट्रिंग "लिंग" उद्धरण चिह्नों में संलग्न है।
स्थानापन्न (%। डब्ल्यू% फिल्टर (y == "एम"), सूची (y = पेस्ट (नाम (डब्ल्यू) [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')")))
हालांकि, यह थोड़ा बेकार दिखता है।
क्या ऐसा करने के और अधिक शानदार तरीके हैं? आखिरकार, मैं इसे एक समारोह में लपेटना चाहता हूं और इसे और भी सामान्य बनाना चाहता हूं।
कोई भी मदद/सुझाव की सराहना की जाएगी।
सधन्यवाद,
स्टीफन
इसी प्रकार के क्यू एंड ए [** यहाँ **] (http://stackoverflow.com/questions/22005419/dplyr-without-hard-coding-the-variable-names/22012451#22012451) – Henrik
'as.nam' आज़माएं ई() ' – hadley
धन्यवाद, मुझे 'as.name()' के बारे में पता नहीं था जब तक अक्रुन ने इसका जवाब नहीं दिया। – Stefan