2013-10-17 6 views
7

मेरे पास डेटा फ्रेम की एक सूची है जिसे मुझे दूसरे कॉलम की अंतिम पंक्ति प्राप्त करने की आवश्यकता है। सभी डेटा फ्रेम में पंक्तियों की अलग-अलग संख्या होती है। मैंने पहले से ही लैप्ली का उपयोग करके कोड लिखा है जो परिवर्तनीय "num" द्वारा किसी भी पंक्ति को निकाला जा सकता है (डेटा फ्रेम की पंक्ति लंबाई से अधिक संख्याओं के लिए एनए लौटा रहा है), हालांकि मैं एक चर संख्या = "सबसे खराब" शामिल करना चाहता हूं जो वापस लौटाएगा अंतिम पंक्ति, उपलब्ध डेटा का दूसरा कॉलम। == "सबसे बुरी"डेटा फ्रेम की सूची से अंतिम पंक्ति मुद्रित करें

if(num=="best"){num=as.integer(1)} else 
(num=as.integer()) 

rownumber<-lapply(xyz, "[", num, 2, drop=FALSE) 

सारा दिन मेरे सिर खुर गया संख्या घोषित करने के लिए एक समाधान खोजने की कोशिश: यह "वें" पंक्ति पुनर्प्राप्त करने के लिए कोड (xyz डेटा फ्रेम की सूची है) है। मैं लूप से बचना चाहता हूं इसलिए मेरा उपयोग लापरवाही से है, लेकिन शायद कोई दूसरा रास्ता नहीं है?

+0

'पूंछ' के साथ 'पूंछ' फ़ंक्शन का उपयोग करें। 'पूंछ 'में' n' तर्क है। – A5C1D2H2I1M1N2O1R2T1

उत्तर

2

सवाल का मेरे समझ है कि आप एक समारोह है कि dataframes के list से एक data.frame के दूसरे स्तंभ देता है, एक वैकल्पिक तर्क worst है कि आप के लिए अनुमति देता के साथ चाहते हैं कि इसे अंतिम अवलोकन तक सीमित करें।

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

मैंने selector फ़ंक्शन लिखा है जो एक पंक्ति और स्तंभ तर्क लेता है, साथ ही worst तर्क भी लेता है। मुझे लगता है कि यह सब कुछ आपको चाहिए।

df1 <- data.frame(A = rnorm(10), B = rnorm(10), C = rnorm(10)) 
df2 <- data.frame(A = rnorm(10), B = rnorm(10), C = rnorm(10)) 
ldf <- list(df1, df2) 

selector <- function(DF, col, row=NULL, worst=FALSE){ 
    if(!is.null(row)) return(DF[row, col]) 
    if(!missing("col")) if(col > ncol(DF)) return(NA) 
    if(!is.null(row)) if(row > nrow(DF)) return(NA) 
    if(worst) { 
     tail(DF[,col, drop=F],1) 
    } else { 
     DF[row, col, drop=FALSE] 
    } 
} 

lapply(ldf, selector, worst=T) 
14

कैसा रहेगा ...

lapply(xyz, tail, 1) 
+1

पाठ्यक्रम का +1 :) – A5C1D2H2I1M1N2O1R2T1

+0

@Jiber, मुझे नहीं लगता कि यह वास्तविक प्रश्न का उत्तर देता है - ओपी एक समारोह को लिखने में मदद करना चाहता था जो पंक्ति और कॉलम संयोजनों का चयन करता है, जो कि अंतिम पंक्ति को लौटने वाले 'सबसे खराब' तर्क के साथ होता है। – ricardo

संबंधित मुद्दे