2017-12-11 124 views
12

मैं dplyr::rename() के साथ एक कॉलम का नाम बदलने का प्रयास कर रहा हूं और आर इस त्रुटि को वापस कर रहा है कि मैं कहीं भी ऑनलाइन नहीं ढूंढ पा रहा हूं।dplyr नाम बदलें - त्रुटि: `new_name` = old_name एक प्रतीक या स्ट्रिंग होना चाहिए, सूत्र नहीं

Error: `new_name` = old_name must be a symbol or a string, not formula

एक 2 कॉलम डेटा फ्रेम के साथ प्रतिलिपि प्रस्तुत करने योग्य उदाहरण:

library(dplyr) 
df <- data.frame(old_name = seq(1:10), x = seq(1:10)) 
df %>% dplyr::rename(new_name = old_name) 

सत्र जानकारी:

> sessionInfo() 
R version 3.4.3 (2017-11-30) 
Platform: x86_64-apple-darwin17.2.0 (64-bit) 
Running under: macOS High Sierra 10.13.1 

Matrix products: default 
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib 
LAPACK: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib 

locale: 
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base 

other attached packages: 
[1] dplyr_0.7.4 

loaded via a namespace (and not attached): 
[1] compiler_3.4.3 magrittr_1.5  assertthat_0.2.0 R6_2.2.2 
[5] bindrcpp_0.2  glue_1.2.0  tibble_1.3.4  Rcpp_0.12.14.3 
[9] pkgconfig_2.0.1 rlang_0.1.4.9000 bindr_0.1 
> 

मैं इस नए सरल डेटा फ्रेम पहले कॉलम new_name नाम दिया है की उम्मीद । यह rename_() के साथ भी काम नहीं करता है।

वर्तमान आर संस्करण 3.4.3 और dplyr संस्करण 0.7.4 है। मैं आर संस्करण 3.3.3 पर इसे दोहराने में असमर्थ था, लेकिन इसे आर संस्करण 3.4.0 पर दोहराने में सक्षम था। यह एक पूरी तरह से साफ आर सत्र पर परीक्षण किया गया था।

मेरा वर्तमान समाधान plyr::rename के साथ मेरे कोड के हिस्से को फिर से लिखना है क्योंकि यह अभी भी काम करता है, लेकिन यह आदर्श नहीं है क्योंकि मुझे बहुत सारे कोड को फिर से लिखना आवश्यक है। plyr() साथ
कार्य उदाहरण:

library(plyr) 
df <- data.frame(old_name = seq(1:10), x = seq(1:10)) 
df %>% plyr::rename(replace = c('old_name' = 'new_name')) 
+0

'plyr' में' new_name' और '' में old_name' dplyr' और ' 'new_name'' और'' old_name'' (पाठ के रूप में) का उपयोग कर के साथ क्या करना पड़ सकता है। क्या आप 'नाम बदलें _') संस्करण भी पोस्ट कर सकते हैं जो 'dplyr' के साथ काम नहीं करता है? जब यह उस त्रुटि को फेंक देता है जब आप केवल 'new_name' और' old_name' चलाते हैं तो आपको क्या मिलता है? – AntoniosK

+0

यदि आपको फिर से त्रुटि मिलती है, तो कृपया त्रुटि पॉप अप देखने और आउटपुट पोस्ट करने के तुरंत बाद 'sessionInfo()' चलाएं। – Clarinetist

+0

'नाम बदलने _()' संस्करण: '' 'df%>% dplyr :: नाम बदलने _ ('NEW_NAME' = 'NEW_NAME')' '' –

उत्तर

1

मैं एक ही समस्या थी। सिर्फ मामले में सभी संकुल अद्यतन करने के बाद, यह (नीचे sessionInfo() देखने के काम करता है।

फिक्स

स्विच renameselect (जो किसी कारण से काम कर रहा था)

df <- data.frame(old_name = seq(1:10), x = seq(1:10)) 
## df %>% dplyr::rename(new_name = old_name) # error 
df %>% dplyr::select(new_name = old_name, everything()) 

यही से plyr आसान हो सकता है शुरू, और अगर अद्यतन करने इसे ठीक नहीं है।

> sessionInfo() 
R version 3.4.0 (2017-04-21) 
Platform: x86_64-apple-darwin15.6.0 (64-bit) 
Running under: macOS 10.13.2 

Matrix products: default 
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib 
LAPACK: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRlapack.dylib 

locale: 
[1] en_CA.UTF-8/en_CA.UTF-8/en_CA.UTF-8/C/en_CA.UTF-8/en_CA.UTF-8 

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] rlang_0.1.6 dplyr_0.7.4 

loaded via a namespace (and not attached): 
[1] compiler_3.4.0 magrittr_1.5  assertthat_0.2.0 R6_2.2.2   
[5] tools_3.4.0  bindrcpp_0.2  glue_1.2.0  tibble_1.3.4  
[9] yaml_2.1.16  Rcpp_0.12.14  pkgconfig_2.0.1 bindr_0.1  
10

@aosmith टिप्पणी की है, यह ar है dlrr (सीआरएएन से) के जारी संस्करण के साथ rlang पैकेज (गिटहब से) के dev संस्करण का उपयोग करने का आनंद लें। पूरी चर्चा यहाँ है: https://github.com/tidyverse/dplyr/issues/3252

दोनों पैकेज क्रैन या दोनों GitHub से से होना चाहिए; विसंगति समस्या है। इसे ठीक करने के लिए, आप अपने dplyr को dev संस्करण में devtools::install_github("tidyverse/dplyr") के साथ अपडेट कर सकते हैं या अपने rlang इंस्टॉल को वर्तमान CRAN संस्करण में वापस ला सकते हैं।

संबंधित मुद्दे