2015-11-19 20 views
9

मैं यह पता लगाने की कोशिश कर रहा हूं कि मुझे ddply का उपयोग करते समय त्रुटि संदेश क्यों मिल रहा है।समझने ddply त्रुटि संदेश

उदाहरण डेटा:

data<-data.frame(area=rep(c("VA","OC","ES"),each=4), 
    sex=rep(c("Male","Female"),each=2,times=3), 
    year=rep(c(2009,2010),times=6), 
    bin=c(110,120,125,125,110,130,125,80,90,90,80,140), 
    shell_length=c(.4,4,1,2,.2,5,.4,4,.8,4,.3,4)) 

bin7<-ddply(data, .(area,year,sex,bin), summarize,n_bin=length(shell_length)) 

त्रुटि संदेश: कल तर्क "द्वारा" कोई डिफ़ॉल्ट

साथ याद आ रही है, मैं इस त्रुटि संदेश मिला: है.मज़ा में त्रुटि (टुकड़ा, ...) । मैंने आर को फिर से शुरू किया और कोड को फिर से चलाया और सब कुछ ठीक था। आज सुबह मुझे त्रुटि संदेश मिला और पुनः प्रारंभ करने से समस्या हल नहीं हुई।

मैंने कुछ उदाहरण code चलाने की कोशिश की और मुझे एक ही त्रुटि संदेश मिला।

# Summarize a dataset by two variables 
require(plyr) 
dfx <- data.frame(
    group = c(rep('A', 8), rep('B', 15), rep('C', 6)), 
    sex = sample(c("M", "F"), size = 29, replace = TRUE), 
    age = runif(n = 29, min = 18, max = 54) 
) 

# Note the use of the '.' function to allow 
# group and sex to be used without quoting 
ddply(dfx, .(group, sex), summarize, 
mean = round(mean(age), 2), 
sd = round(sd(age), 2)) 

आर जानकारी

R version 3.2.1 (2015-06-18) 
Platform: i386-w64-mingw32/i386 (32-bit) 
Running under: Windows 7 x64 (build 7601) Service Pack 1 

locale: 
[1] LC_COLLATE=English_United States.1252 
[2] LC_CTYPE=English_United States.1252 
[3] LC_MONETARY=English_United States.1252 
[4] LC_NUMERIC=C       
[5] LC_TIME=English_United States.1252  

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

other attached packages: 
[1] Hmisc_3.17-0  ggplot2_1.0.1  Formula_1.2-1  
[4] survival_2.38-1  car_2.0-26   MASS_7.3-40   
[7] xlsx_0.5.7   xlsxjars_0.6.1  rJava_0.9-7   
[10] plyr_1.8.3   latticeExtra_0.6-26 RColorBrewer_1.1-2 
[13] lattice_0.20-31 

कोई स्पष्टीकरण दें कि यह हो रहा है कि मैं यह जानना चाहेंगे कृपया सकता है।

धन्यवाद

+1

प्लीयर के समान संस्करण का उपयोग करके त्रुटि को पुन: उत्पन्न करने में सक्षम नहीं है। क्या आपने एक ही समय में 'प्लीयर' और 'dplyr' लोड किया था? – akrun

+1

मुझे त्रुटि नहीं मिलती है। लेकिन मैंने डेटा फ्रेम 'डी' नाम दिया। सूत्र भी काम करता है: 'ddply (डी, ~ क्षेत्र + वर्ष + लिंग + बिन, संक्षेप, n_bin = लंबाई (shell_length)) ' – jogo

+4

दोनों' dplyr' और 'plyr' में' संक्षेप 'नामक फ़ंक्शन हैं। आप शायद 'dplyr' भी लोड किया है। दोनों पैकेजों को अलग करें और फिर 'dplyr' लोड करने से पहले' plyr' लोड करें। –

उत्तर

14

के रूप में सवाल का नरेंद्र की टिप्पणी में कहा गया है, यह त्रुटि अन्य पैकेज एक समारोह summarize (या summarise) कहा जाता है कि plyr में समारोह के रूप में काम नहीं करता है लोड हो रहा है की वजह से हो सकता है। उदाहरण के लिए:,

ddply(iris, "Species", plyr::summarize, mean_sepal_length = mean(Sepal.Length)) 
#> Species mean_sepal_length 
#> 1  setosa    5.006 
#> 2 versicolor    5.936 
#> 3 virginica    6.588 

वैकल्पिक रूप से एक पैकेज गलत कार्य है कि अलग कर सकती हैं:

library(plyr) 
library(Hmisc) 

ddply(iris, "Species", summarize, mean_sepal_length = mean(Sepal.Length)) 
#> Error in .fun(piece, ...) : argument "by" is missing, with no default 

एक समाधान :: साथ सही समारोह और सही नाम स्थान कॉल करने के लिए है

detach(package:Hmisc) 
ddply(iris, "Species", summarize, mean_sepal_length = mean(Sepal.Length)) 
#> Species mean_sepal_length 
#> 1  setosa    5.006 
#> 2 versicolor    5.936 
#> 3 virginica    6.588 

अंत में, यदि किसी को दोनों पैकेजों की आवश्यकता है और :: से परेशान नहीं करना चाहते हैं, तो कोई उन्हें दूसरे क्रम में लोड कर सकता है:

library(Hmisc) 
library(plyr) 

ddply(iris, "Species", summarize, mean_sepal_length = mean(Sepal.Length)) 
#> Species mean_sepal_length 
#> 1  setosa    5.006 
#> 2 versicolor    5.936 
#> 3 virginica    6.588 
1

मैं एक ऐसी ही समस्या (एक अलग डेटा सेट, लेकिन एक ही त्रुटि संदेश के साथ) था, लेकिन मुझे पता चला कि ddplyr ब्रिटेन वर्तनी का इस्तेमाल किया "संक्षेप में प्रस्तुत"। एक बार जब मैंने वर्तनी परिवर्तन किया, कोड काम किया।

यहां इस्तेमाल किया गया कोड है। जब मैंने "z" वर्तनी का उपयोग किया, तो मुझे त्रुटि संदेश Error in .fun(piece, ...) : argument "by" is missing, with no default मिला; लेकिन इसे हल करने के लिए इसे बदल दिया।

library(plyr) 
ddply(InsectSprays,.(spray),summarise,sum=sum(count)) 
+0

पर होने के लिए 'plyr :: summarize (...)' निर्दिष्ट भी कर सकते हैं इससे मेरी मदद मिली। धन्यवाद! – GlennFriesen

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