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

उम्मीद है कि मेरा उदाहरण चीजों को स्पष्ट कर देगा (वास्तविक कोड लूप के अंदर और अधिक करता है, लेकिन यह प्रासंगिक हिस्सा है):

age_list = list(list(17:19, 20:23), 
            seq(from= 17,to=50, by=1))
ind_out <- "emp"
l_name <- paste0("out_stats_", ind_out)
# i create the new variable here,  you can see it in the env.

assign(l_name,vector(mode = "list", length = length(age_list))) 

for (g in 1:length(age_brackets_list)){
  
  out1 = data.frame(name = g) 
  
  # and now i wanna put this element into my new variable that i've created, but i can't call it, or use assign
  
  # i've tried 
  #assign(l_name, out1)
  #assign(l_name[[1]], out1)
  #do.call("<-", list(l_name[[g]], out1))
}

assign के साथ, कोड मेरे द्वारा बनाई गई सूची को नए डेटाफ्रेम के साथ बदल देता है - मैं समझता हूं कि यह वही है जो असाइन करता है, इसलिए यह काम नहीं करता है। do.call के साथ मैं g=2 पर एक त्रुटि का सामना करता हूं क्योंकि इसे सूची के रूप में पहचाना नहीं गया है (l_name द्वारा दर्शाए गए चर का केवल एक आयाम (?) है)।

किसी भी मदद की सराहना की!

r
0
ladyp 30 जुलाई 2020, 17:52

1 उत्तर

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

आपको lapply (लूप के लिए विकल्प) द्वारा निर्मित डेटा फ़्रेम की सूची में एक बार assign का उपयोग करने की आवश्यकता है:

age_list = list(list(17:19, 20:23), 
                seq(from= 17,to=50, by=1))
ind_out <- "emp"
l_name <- paste0("out_stats_", ind_out)
assign(l_name, lapply(1:length(age_list), function(x){
#
# more code
#
data.frame(name=g)}))
0
slava-kohut 30 जुलाई 2020, 18:34