मैं प्रोग्रामेटिक रूप से कॉलम नामों को फ़ंक्शन में पास करने की कोशिश कर रहा हूं ताकि उन्हें dplyr में चुना जा सके। कॉलम नाम अलग-अलग होंगे इसलिए मैंने चयनित फ़ंक्शन select_
के मानक मूल्यांकन संस्करण का उपयोग करने का प्रयास किया है। कॉलम नाम स्वयं थोड़ा मजाकिया हैं क्योंकि उनमें +
और -
वर्ण हैं, जो मुझे लगता है कि समस्या का कारण बन रहा है। नीचे एक साधारण उदाहरण है जो त्रुटि को दोहराता है।मूल्यांकन के बिना dplyr में कॉलम नामों को कैसे पास किया जाए
library(tibble)
library(dplyr)
data <- data_frame(target_id = 'xyz',
`CH4+Sulfate-1` = 1.2,
`CH4+Sulfate-2` = 2,
`CH4+Sulfate-3` = 3)
columns <- c('CH4+Sulfate-1', 'CH4+Sulfate-2', 'CH4+Sulfate-3')
select_(data, .dots = columns)
मैं निम्न त्रुटि
Error in eval(expr, envir, enclos) : object 'CH4' not found
कौन सा मुझे विश्वास है कि नाम के बजाय का मूल्यांकन स्ट्रिंग के रूप में उठाए जा रहे हैं मिलता है। तालिका के कॉलम का नाम बदलने के बिना मैं इस समस्या को कैसे प्राप्त कर सकता हूं?
हमम .... अच्छा सवाल - आधार आर से 'डेटा [कॉलम]' ठीक है, इसलिए यह एक सार्वभौमिक मुद्दा नहीं है। आप 'dplyr :: चयन (डेटा, मिलान (कॉलम, नाम (डेटा)) के साथ इसके आसपास भी हैक कर सकते हैं) 'लेकिन मुझे अन्यथा कोई जानकारी नहीं है। – thelatemail
एक बिल्कुल न्यूनतम उदाहरण इसे तोड़ने के लिए पर्याप्त है - 'डेटा <- data.frame (\' ए + बी \ '= 1: 3, check.names = FALSE); select_ (डेटा, "ए + बी") ' – thelatemail
ऐसा लगता है कि' select_ 'के साथ 'one_of' इन [स्थितियों के प्रकार] में उत्तर हो सकता है (http://stackoverflow.com/questions/35839408/r-dplyr- ड्रॉप-एकाधिक-कॉलम/35839679 # 35839679): 'चुनें (डेटा, एक_ओफ़ (कॉलम)) ' – aosmith