मेरे पास नेस्टेड सूची है जो कुछ इसी तरह दिखती है

test <- list(a = list(a1 = 1:5, a2 = 6:10, a3=data.frame(a4 = letters, a5 = LETTERS)),
     b = list(a1 = 11:15, a2 = 16:20, a3=data.frame(a4 = letters, a5 = LETTERS)))

मुझे प्रत्येक data.frame के लिए वेक्टर a5 (शायद एक सूची के रूप में) निकालने में दिलचस्पी है। मुझे पता है कि मैं निम्नलिखित का उपयोग करके सूची में एक विशिष्ट तत्व (जैसे डेटाफ्रेम) निकाल सकता हूं:

a3 <- sapply(test, '[', 'a3')

लेकिन मुझे यकीन नहीं है कि मैं डेटाफ्रेम के भीतर एक विशिष्ट चर कैसे प्राप्त कर सकता हूं।

अद्यतन: मुझे यह भी जोड़ना चाहिए कि मुझे पता है कि मैं डेटाफ्रेम प्राप्त करने के लिए परिणाम (जैसे lapply(a3, '[', 'a5') में lapply का उपयोग कर सकता हूं लेकिन मुझे आश्चर्य है कि कोई छोटा रास्ता है या नहीं।

r
0
rjss 1 अगस्त 2018, 16:46
test[["a"]][["a3"]]$a5 या test[["b"]][["a3"]]$a5? मुझे समझ में नहीं आता कि "छोटा रास्ता" से आपका क्या मतलब है।
 – 
RLave
1 अगस्त 2018, 16:53
मुझे लगता है कि संरचना से स्वतंत्र रूप से नाम के आधार पर पूरी तरह से सबसेट करने का कोई कार्य है?
 – 
rjss
1 अगस्त 2018, 17:03

2 जवाब

यहाँ map के साथ एक विकल्प दिया गया है

library(tidyverse)
map(test, ~ pluck(.x$a3, "a5"))
#$a
# [1] A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
#Levels: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

#$b
# [1] A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
#Levels: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
1
akrun 1 अगस्त 2018, 17:44