मैं एक कस्टम समारोह के अंदर tidyr::gather()
कॉल करने के लिए, करने के लिए जो मैं चरित्र चर key
और value
कॉलम का नाम बदलने के लिए इस्तेमाल किया जाएगा की एक जोड़ी से पारित करना चाहते हैं। जैसेकुंजी/मूल्य कॉलम का नाम बदलने के लिए tidyr के इकट्ठा करने के लिए परिवर्तनीय पास?
myFunc <- function(mydata, key.col, val.col) {
new.data <- tidyr::gather(data = mydata, key = key.col, value = val.col)
return(new.data)
}
हालांकि, यह वांछित के रूप में काम नहीं करता है।
temp.data <- data.frame(day.1 = c(20, 22, 23), day.2 = c(32, 22, 45), day.3 = c(17, 9, 33))
# Call my custom function, renaming the key and value columns
# "day" and "temp", respectively
long.data <- myFunc(mydata = temp.data, key.col = "day", val.col = "temp")
# Columns have *not* been renamed as desired
head(long.data)
key.col val.col
1 day.1 20
2 day.1 22
3 day.1 23
4 day.2 32
5 day.2 22
6 day.2 45
वांछित उत्पादन:
head(long.data)
day temp
1 day.1 20
2 day.1 22
3 day.1 23
4 day.2 32
5 day.2 22
6 day.2 45
मेरे समझ के साथ कि gather()
सबसे तर्क के लिए नंगे चर नाम का उपयोग करता है (इस उदाहरण में के रूप में यह है, स्तंभ नाम के रूप में "key.col"
का उपयोग कर के रूप में मूल्य करने का विरोध किया है key.col
में संग्रहीत)। मैंने gather()
कॉल में मूल्य पारित करने के कई तरीकों का प्रयास किया है, लेकिन अधिकांश रिटर्न त्रुटियां। उदाहरण के लिए, myFunc
वापसी Error: Invalid column specification
(अनदेखी, निदर्शी प्रयोजनों के लिए, value
पैरामीटर, जो समान व्यवहार है) के भीतर gather()
कॉल के इन तीन वेरिएंट:
gather(data = mydata, key = as.character(key.col) value = val.col)
gather(data = mydata, key = as.name(key.col) value = val.col)
gather(data = mydata, key = as.name(as.character(key.col)) value = val.col)
समाधान के लिए, मैं सिर्फ कॉल निम्न स्तंभ का नाम बदलने gather()
रहे हैं:
colnames(long.data)[colnames(long.data) == "key"] <- "day"
लेकिन कुंजी/मान स्तंभ का नाम बदलने के लिए gather()
की कथित कार्यक्षमता को देखते हुए, मैं कैसे एक कस्टम समारोह के भीतर gather()
कॉल में ऐसा कर सकते हैं?
पढ़ें '? Gather' और" इन्हें भी देखें "अनुभाग पर ध्यान देते हैं। फिर उपयुक्त फ़ंक्शन नाम को गुगल करने से आपको [यह] (http://stackoverflow.com/q/26429582/324364) हो सकता है। – joran