मेरे पास एक अभ्यास है जो मैं आर में कर रहा हूं जिसके लिए मुझे कुछ चर के लिए स्टेम और लीफ प्लॉट खोजने की आवश्यकता है। उदाहरण के लिए इस प्रक्रिया का पहला पुनरावृत्ति होगा:

> with(data = Commercial_Properties, stem(x = Op_Expense_Tax))

  The decimal point is at the |

   2 | 0
   4 | 080003358
   6 | 012613
   8 | 00001223456001555689
  10 | 013344566677778123344666668
  12 | 00011115777889002
  14 | 6

इसके बाद कुछ और चरों के लिए मुझे इसे बार-बार करना होगा। इसलिए सुधार की ओर अपने पथ में मुझे अपने एक मित्र की याद आती है जो प्रोग्रामिंग में पारंगत है और उल्लेख करता है कि यदि आप एक ही कार्य को बार-बार कर रहे हैं तो यह किसी प्रकार के for लूप की मांग करता है।

परिणामस्वरूप मैंने ऐसा करने का प्रयास किया:

for (i in 2:5){
  
  stem_colnames(Commercial_Properties[i]) = with(data = Commercial_Properties, stem(x = unlist(Commercial_Properties[,i])))
  
}

मैं चाहता था कि कोड मेरे डेटा फ्रेम से कॉलम का नाम निकाले, संबंधित चर का नाम बनाने के लिए इसे stem_ में जोड़ दें और फिर संबंधित स्टेम और लीफ प्लॉट का उत्पादन करें। मैं इसे मैन्युअल रूप से कर सकता था लेकिन मैं सोच रहा था कि प्रक्रिया को स्वचालित करना संभव है या नहीं? क्या मैं यह उम्मीद करने में बहुत महत्वाकांक्षी हूं कि मैं अपने चरों को भी पुनरावृत्त रूप से नाम दे सकता हूं?

उदाहरण को पुन: पेश करने के लिए निम्नलिखित dput आउटपुट है।

 dput(head(Commercial_Properties, 5))
structure(list(Rental_Rates = c(13.5, 12, 10.5, 15, 14), Age = c(1, 
14, 16, 4, 11), Op_Expense_Tax = c(5.02, 8.19, 3, 10.7, 8.97), 
    Vacancy_Rate = c(0.14, 0.27, 0, 0.05, 0.07), Total_Sq_Ft = c(123000, 
    104079, 39998, 57112, 60000)), row.names = c(NA, -5L), class = c("tbl_df", 
"tbl", "data.frame"))

संपादित करें: उपयोग किए गए पैकेज: tidyverse, car

1
dc3rd 3 अक्टूबर 2021, 04:53
क्या आप इस्तेमाल किया गया पैकेज दिखा सकते हैं
 – 
akrun
3 अक्टूबर 2021, 05:01
अभी सवाल संपादित किया
 – 
dc3rd
3 अक्टूबर 2021, 05:03
कोई फ़ंक्शन नाम नहीं है stem_colnames
 – 
akrun
3 अक्टूबर 2021, 05:04
मैं सहमत हूं। मैं जो करने की कोशिश कर रहा था वह colnames फ़ंक्शन का उपयोग कर रहा था ताकि स्पष्टता के लिए मैं जो करने की कोशिश कर रहा था वह stem_ (put the name of my selected column here by using the colnames() function) था। तो उदाहरण के लिए stem_colnames(Commercial_Properties[2]) stem_Age' after the के लिए लूप रन हो जाएगा
 – 
dc3rd
3 अक्टूबर 2021, 05:05
नीचे पोस्ट किए गए समाधान के बारे में क्या?
 – 
akrun
3 अक्टूबर 2021, 05:08

1 उत्तर

सबसे बढ़िया उत्तर

cat का उपयोग करने पर विचार करें

for (i in 2:5){cat(names(Commercial_Properties)[i], "\n")
  stem(Commercial_Properties[[i]])
}

आउटपुट

Age 

  The decimal point is 1 digit(s) to the right of the |

  0 | 14
  0 | 
  1 | 14
  1 | 6

Op_Expense_Tax 

  The decimal point is at the |

   2 | 0
   4 | 0
   6 | 
   8 | 20
  10 | 7

Vacancy_Rate 

  The decimal point is 1 digit(s) to the left of the |

  0 | 057
  1 | 4
  2 | 7

Total_Sq_Ft 

  The decimal point is 4 digit(s) to the right of the |

   2 | 
   4 | 07
   6 | 0
   8 | 
  10 | 4
  12 | 3

या अगर हमें किसी फ़ंक्शन की आवश्यकता है

f1 <- function(dat, colind) {
   for(i in colind) {
        cat(names(dat)[i], "\n")
        stem(dat[[i]])
   }
   }
f1(Commercial_Properties, 2:5)

या यह iwalk के साथ किया जा सकता है

library(purrr)
iwalk(Commercial_Properties, ~ {cat(.y, "\n"); stem(.x)})
1
akrun 3 अक्टूबर 2021, 05:12
अच्छा... cat क्या करता है?
 – 
dc3rd
3 अक्टूबर 2021, 05:09
1
यह इनपुट कॉलम नाम को step से पहले प्रिंट करता है। मैंने अगली लाइन (\n) जोड़ी है ताकि स्टेम से आउटपुट अगली लाइन में प्रिंट हो जाए
 – 
akrun
3 अक्टूबर 2021, 05:10
ठंडा। सहायता के लिए धन्यवाद। क्या ऐसा करने का कोई आसान तरीका है जिस तरह से मैं चाहता था या तथ्य यह है कि मैं एक चर नाम में एक फ़ंक्शन का उपयोग करने की कोशिश कर रहा हूं जो मामलों को जटिल बनाता है?
 – 
dc3rd
3 अक्टूबर 2021, 05:12
अपडेट के बारे में क्या iwalk(Commercial_Properties, ~ {cat(.y, "\n"); stem(.x)})
 – 
akrun
3 अक्टूबर 2021, 05:13
1
मुझे पहले कभी iwalk फ़ंक्शन का सामना नहीं करना पड़ा। मेरे लिए एक्सप्लोर करने के लिए कुछ नया। मेरे साथ प्रयोग करने के लिए निश्चित रूप से पर्याप्त विभिन्न समाधान। मैं अब आपको परेशान नहीं करूंगा। आपने मेरी अपेक्षा से अधिक मदद की है। :)
 – 
dc3rd
3 अक्टूबर 2021, 05:16