दिलचस्प पोस्ट
याहू फाइनेंस यूआरएल काम नहीं कर रहा है कंस्ट्रक्टर में फ़ील्ड प्रारंभ करना – प्रारंभिक सूची बनाम निर्माता सामग्री कैसे "अनदेखा डालें" और "डुप्लिकेट कुंजी अद्यतन पर" (एसक्यूएल मर्ज) का अनुकरण कैसे करना है postgresql? यदि मेरे पास इकाई प्रबंधक हैं तो सत्र ऑब्जेक्ट कैसे प्राप्त कर सकते हैं I मैं कक्षा से स्टोरीबोर्ड प्रोग्राम को कैसे लोड कर सकता हूं? curl_init () फ़ंक्शन काम नहीं कर रहा है कैसे jQuery के लिए एक मॉडल भेजना $ .एजेसीएस () पोस्ट अनुरोध MVC नियंत्रक विधि पूर्णांक अतिप्रवाह और अपरिभाषित व्यवहार खिड़कियों के रूपों में स्पलैश स्क्रीन को कैसे बनाया जाए? त्रुटि: कार्य निष्पादन के लिए विफल ': ऐप: transformClassesWithDexForDebug' आर में फजी / अंदाजित स्ट्रिंग मिलान का उपयोग करके दो डेटा फ़्रेम मर्ज करना C ++ में 'static_cast' का उपयोग करके डाउनकास्टिंग ऋणात्मक सरणी अनुक्रमणियां सी में अनुमत हैं? 800px के बाद स्क्रॉल डाउन पर डिवीज़ दिखाएं यह निर्धारित करने के लिए कि क्या कोई विशिष्ट सामान्य इंटरफ़ेस प्रकार लागू होता है

आर ऑब्जेक्ट फ़ंक्शंस या "फॉर" लूप में प्रिंट क्यों नहीं करते?

मेरे पास एक डी मैट्रिक्स नाम है। जब मैं इसे दर्ज करता हूँ, सब कुछ ठीक काम करता है:

i <- 1 shapiro.test(ddd[,y]) ad.test(ddd[,y]) stem(ddd[,y]) print(y) 

शापिरो विल्क, एंडरसन डार्लिंग के लिए कॉल, और सभी कामों को रोकें, और एक ही कॉलम निकालें।

अगर मैं इस कोड को "फॉर" लूप में डालता हूं, शापिरो विल्क को कॉल करता है, और एंडरसन डार्लिंग काम करना बंद कर देता है, जबकि स्टैम एंड लीफ कॉल और प्रिंट कॉल काम करना जारी रखता है।

 for (y in 7:10) { shapiro.test(ddd[,y]) ad.test(ddd[,y]) stem(ddd[,y]) print(y) } The decimal point is 1 digit(s) to the right of the | 0 | 0 0 | 899999 1 | 0 [1] 7 

यदि मैं फ़ंक्शन की कोशिश करता हूं और लिखता हूं, तो ऐसा ही होता है। दवेदल और ईडी काम नहीं करते हैं अन्य कॉल करते हैं

 > D <- function (y) { + shapiro.test(ddd[,y]) + ad.test(ddd[,y]) + stem(ddd[,y]) + print(y) } > D(9) The decimal point is at the | 9 | 000 9 | 10 | 00000 [1] 9 

सभी कॉल्स उसी तरह से व्यवहार क्यों नहीं करते?

वेब के समाधान से एकत्रित समाधान "आर ऑब्जेक्ट फ़ंक्शंस या "फॉर" लूप में प्रिंट क्यों नहीं करते?"

एक पाश में, स्वचालित मुद्रण बंद है, क्योंकि यह किसी फ़ंक्शन के अंदर है। यदि आप आउटपुट देखना चाहते हैं तो आपको दोनों मामलों में कुछ स्पष्ट रूप से print करना होगा। [1] 9 चीजें आपको मिल रही हैं क्योंकि आप y के मूल्यों को स्पष्ट रूप से प्रिंट कर रहे हैं।

यहां यह एक उदाहरण है कि आप ऐसा करने के बारे में कैसे सोच सकते हैं।

 > DF <- data.frame(A = rnorm(100), B = rlnorm(100)) > y <- 1 > shapiro.test(DF[,y]) Shapiro-Wilk normality test data: DF[, y] W = 0.9891, p-value = 0.5895 

इसलिए हमारे पास स्वत: प्रिंटिंग है पाश में हमें यह करना होगा:

 for(y in 1:2) { print(shapiro.test(DF[,y])) } 

यदि आप अधिक परीक्षणों को प्रिंट करना चाहते हैं, तो उन्हें पाश में अतिरिक्त लाइनों के रूप में जोड़ें:

 for(y in 1:2) { writeLines(paste("Shapiro Wilks Test for column", y)) print(shapiro.test(DF[,y])) writeLines(paste("Anderson Darling Test for column", y)) print(ad.test(DF[,y])) } 

लेकिन यह बहुत आकर्षक नहीं है जब तक आप आउटपुट के रीमांड के माध्यम से पढ़ना पसंद नहीं करते। इसके बजाय, उचित परीक्षण वस्तुओं को क्यों नहीं बचाएं और फिर आप उन्हें प्रिंट कर सकते हैं और उनकी जांच कर सकते हैं, शायद उन्हें टेस्ट आँकड़े और पी-वैल्यू को एक टेबल में एकत्रित करने की प्रक्रिया भी कर सकते हैं? आप ऐसा कर सकते हैं जो एक लूप का उपयोग करते हैं:

 ## object of save fitted objects in obj <- vector(mode = "list", length = 2) ## loop for(y in seq_along(obj)) { obj[[y]] <- shapiro.test(DF[,y]) } 

हम फिर मॉडल का उपयोग कर देख सकते हैं

 > obj[[1]] Shapiro-Wilk normality test data: DF[, y] W = 0.9891, p-value = 0.5895 

उदाहरण के लिए, या lapply का उपयोग करते lapply , जो हमारे द्वारा परिणामों को हमारे लिए स्टोर करने के लिए उपयोग करने वाले ऑब्जेक्ट की स्थापना का ख्याल रखता है:

 > obj2 <- lapply(DF, shapiro.test) > obj2[[1]] Shapiro-Wilk normality test data: X[[1L]] W = 0.9891, p-value = 0.5895 

अब कहो मैं W और p-value डेटा निकालना चाहता था, हम चाहते हैं कि बिट्स को निकालने के लिए हम सारे परिणाम संग्रहित कर सकते हैं, जैसे:

 > tab <- t(sapply(obj2, function(x) c(x$statistic, x$p.value))) > colnames(tab) <- c("W", "p.value") > tab W p.value A 0.9890621 5.894563e-01 B 0.4589731 1.754559e-17 

या महत्व सितारों के लिए रुचि रखने वालों के लिए:

 > tab2 <- lapply(obj2, function(x) c(W = unname(x$statistic), + `p.value` = x$p.value)) > tab2 <- data.frame(do.call(rbind, tab2)) > printCoefmat(tab2, has.Pvalue = TRUE) W p.value A 0.9891 0.5895 B 0.4590 <2e-16 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 

यह स्क्रीन पर आउटपुट को फायरिंग से बेहतर होना चाहिए जो आपको फिर से डालना होगा?

एक नया उत्तर नहीं है, लेकिन उपरोक्त के अतिरिक्त: "flush.console ()" प्रिंटिंग को बाद में लूप के दौरान जगह लेने के लिए बाध्य करने के लिए आवश्यक है लूप के दौरान प्रिंट () का उपयोग करने का एकमात्र कारण प्रगति दिखाना है, जैसे कई फाइलें पढ़ना

 for (i in 1:10) { print(i) flush.console() for(j in 1:100000) k <- 0 } 

गेविन सिम्पसन से शानदार जवाब मैंने पिछले जादुई जादू को लिया और इसे एक समारोह में बदल दिया।

 sw.df <- function ( data ) { obj <- lapply(data, shapiro.test) tab <- lapply(obj, function(x) c(W = unname(x$statistic), `p.value` = x$p.value)) tab <- data.frame(do.call(rbind, tab)) printCoefmat(tab, has.Pvalue = TRUE) } 

तब आप इसे अपने डेटा फ़्रेम के साथ कॉल कर सकते हैं sw.df (df)

और यदि आप परिवर्तन की कोशिश करना चाहते हैं: sw.df (लॉग (डीएफ))