आर, एक ही कमांड द्वारा निष्पादित सूची में प्रत्येक तत्व को बनाने के लिए लूप के लिए कैसे उपयोग करें

उदाहरण के लिए, datanewV_102,datanewV_103,datanewV_105 सभी डेटा फ्रेम 100 अवलोकन और 50 कॉलम के साथ हैं।

मैं तीनों डेटा फ्रेम के लिए एक ही कॉलम, सबसे अच्छा 6 वां कॉलम छोड़ना चाहता हूं

वांछित परिणाम: (कोई नया डेटा फ्रेम नहीं, मौजूदा डेटा फ्रेम पर संपादित करें।)

DatanewV_102,datanewV_103,datanewV_105 100 अवलोकन और 49 कॉलम के साथ डेटा फ्रेम बन जाता है।

मेरे कोड की तरह था:

Vlist12 = सूची (डेटान्यूवी_102, डेटान्यूवी_103,डेटान्यूवी_105)
के लिए (v12 vlist12 में) {
v12 = v12[-6]
}

हालाँकि, मेरे परिणाम में datanewV_102,datanewV_103,datanewV_105 वही रहता है। v12 datanewV_105 की कॉपी है और छठा कॉलम गिरा दिया गया है।

मैं इसे कैसे संशोधित कर सकता हूं? अगर लूप के लिए उपयोग करना चाहिए?

r
0
Sienna97 30 नवम्बर 2020, 20:21

1 उत्तर

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

इन सभी अलग-अलग डेटाफ्रेमों को स्टोर करने में सक्षम होने के लिए आपको अपने आउटपुट की भी आवश्यकता है (आपके वर्तमान संस्करण में, v12 लूप की प्रत्येक घटना पर ओवरराइट हो जाता है)।

यदि आप इंडेक्स पर लूप करते हैं, तो यह for लूप के साथ संभव है। उदाहरण के लिए:

datanewV_102 <- data.frame(x = letters[1:10],
                           y = LETTERS[1:10])
datanewV_103 <- data.frame(x = letters[1:10],
                           y = LETTERS[1:10])
datanewV_105 <- data.frame(x = letters[1:10],
                           y = LETTERS[1:10])



datanew_list <- list(datanewV_102,datanewV_103,datanewV_105)

output_list1 <- list()

for(i in seq_along(datanew_list)){
  cur_df <- datanew_list[[i]]
  output_list1[[i]] <- cur_df[-2]
}

लेकिन यहां आमतौर पर ऐसा मामला होता है जहां lapply चीजों को पढ़ना आसान बनाता है। उदाहरण के लिए:

remove_col <- function(df){
  df[-2]
}

output_list2 <- lapply(datanew_list, remove_col)

दो समाधान समकक्ष हैं:

all.equal(output_list1, output_list2)
#> [1] TRUE
0
Alexlok 30 नवम्बर 2020, 17:30