2012-08-03 8 views
5

में सभी dataframes से NAS साथ स्तंभों को निकालने मैं कई डेटा फ्रेम से बना एक सूची है। मैं प्रत्येक डेटा फ्रेम में एनएएस के साथ सभी कॉलम को हटाना चाहता हूं। नोट करें कि हटाए जाने वाले कॉलम प्रत्येक डेटा फ्रेम में समान नहीं हैं। नीचे प्रदान नमूना डेटा। किसी भी सुझाव की बहुत सराहना की।सूची

WW1_Data <- structure(list(Alnön = structure(list(Site_Name = structure(1L, .Label = 
c("Alnön","Ammarnäs", "Anjan", "Bäcksand", "Fittjebodarna", "Flatruet", 
"Glen", "Idre", "Klångstavallen", "Kramfors", "Ljungdalen", "Ljungris", 
"Mårdsund", "Mörtsjön", "Nordmaling", "Öster_Galåbodarna", "Ramundberget", 
"Rätan", "Särvfjället", "Smedstorp", "Söderhamn", "Stensoffa", 
"Storulvån", "Sveg", "Tanna", "Tänndalen", "Vålådalen", "Vemdalsskalet" 
), class = "factor"), X1996 = 0.307692307692308, X1997 = NA_real_, 
X2000 = 0.260869565217391, X2001 = NA_real_, X2002 = NA_real_, 
X2003 = NA_real_, X2008 = NA_real_, X2009 = NA_real_, X2010 = 0.0833333333333333, 
X2011 = NA_real_), .Names = c("Site_Name", "X1996", "X1997", 
"X2000", "X2001", "X2002", "X2003", "X2008", "X2009", "X2010", 
"X2011"), row.names = 1L, class = "data.frame"), Ammarnäs = structure(list(
Site_Name = structure(2L, .Label = c("Alnön", "Ammarnäs", 
"Anjan", "Bäcksand", "Fittjebodarna", "Flatruet", "Glen", 
"Idre", "Klångstavallen", "Kramfors", "Ljungdalen", "Ljungris", 
"Mårdsund", "Mörtsjön", "Nordmaling", "Öster_Galåbodarna", 
"Ramundberget", "Rätan", "Särvfjället", "Smedstorp", "Söderhamn", 
"Stensoffa", "Storulvån", "Sveg", "Tanna", "Tänndalen", "Vålådalen", 
"Vemdalsskalet"), class = "factor"), X1996 = 0.75, X1997 = NA_real_, 
X2000 = NA_real_, X2001 = NA_real_, X2002 = NA_real_, X2003 = NA_real_, 
X2008 = NA_real_, X2009 = NA_real_, X2010 = NA_real_, X2011 = 0.8), .Names = 
c("Site_Name", "X1996", "X1997", "X2000", "X2001", "X2002", "X2003", "X2008", 
"X2009", "X2010", "X2011"), row.names = 2L, class = "data.frame"), 
Anjan = structure(list(Site_Name = structure(3L, .Label = c("Alnön", 
"Ammarnäs", "Anjan", "Bäcksand", "Fittjebodarna", "Flatruet", 
"Glen", "Idre", "Klångstavallen", "Kramfors", "Ljungdalen", 
"Ljungris", "Mårdsund", "Mörtsjön", "Nordmaling", "Öster_Galåbodarna", 
"Ramundberget", "Rätan", "Särvfjället", "Smedstorp", "Söderhamn", 
"Stensoffa", "Storulvån", "Sveg", "Tanna", "Tänndalen", "Vålådalen", 
"Vemdalsskalet"), class = "factor"), X1996 = NA_real_, X1997 = NA_real_, 
X2000 = NA_real_, X2001 = NA_real_, X2002 = NA_real_, 
X2003 = NA_real_, X2008 = NA_real_, X2009 = 0.52, X2010 = 0.5, 
X2011 = NA_real_), .Names = c("Site_Name", "X1996", "X1997", 
"X2000", "X2001", "X2002", "X2003", "X2008", "X2009", "X2010", 
"X2011"), row.names = 3L, class = "data.frame"), Bäcksand = structure(list(
Site_Name = structure(4L, .Label = c("Alnön", "Ammarnäs", 
"Anjan", "Bäcksand", "Fittjebodarna", "Flatruet", "Glen", 
"Idre", "Klångstavallen", "Kramfors", "Ljungdalen", "Ljungris", 
"Mårdsund", "Mörtsjön", "Nordmaling", "Öster_Galåbodarna", 
"Ramundberget", "Rätan", "Särvfjället", "Smedstorp", 
"Söderhamn", "Stensoffa", "Storulvån", "Sveg", "Tanna", 
"Tänndalen", "Vålådalen", "Vemdalsskalet"), class = "factor"), 
X1996 = NA_real_, X1997 = NA_real_, X2000 = 0.0833333333333333, 
X2001 = NA_real_, X2002 = NA_real_, X2003 = NA_real_, 
X2008 = NA_real_, X2009 = NA_real_, X2010 = 0.375, X2011 = NA_real_), .Names = 
c("Site_Name", "X1996", "X1997", "X2000", "X2001", "X2002", "X2003", "X2008", 
"X2009", "X2010", "X2011"), row.names = 4L, class = "data.frame"), 
Fittjebodarna = structure(list(Site_Name = structure(5L, .Label = c("Alnön", 
"Ammarnäs", "Anjan", "Bäcksand", "Fittjebodarna", "Flatruet", 
"Glen", "Idre", "Klångstavallen", "Kramfors", "Ljungdalen", 
"Ljungris", "Mårdsund", "Mörtsjön", "Nordmaling", "Öster_Galåbodarna", 
"Ramundberget", "Rätan", "Särvfjället", "Smedstorp", "Söderhamn", 
"Stensoffa", "Storulvån", "Sveg", "Tanna", "Tänndalen", "Vålådalen", 
"Vemdalsskalet"), class = "factor"), X1996 = NA_real_, X1997 = NA_real_, 
X2000 = NA_real_, X2001 = NA_real_, X2002 = NA_real_, 
X2003 = NA_real_, X2008 = 0.4, X2009 = 0.423076923076923, 
X2010 = NA_real_, X2011 = NA_real_), .Names = c("Site_Name", 
"X1996", "X1997", "X2000", "X2001", "X2002", "X2003", "X2008", 
"X2009", "X2010", "X2011"), row.names = 5L, class = "data.frame")), .Names = c("Alnön", 
"Ammarnäs", "Anjan", "Bäcksand", "Fittjebodarna")) 

उत्तर

7

प्रयास करें इस

lapply(WW1_Data, function(x) x[, !is.na(x)]) 
$Alnön 
    Site_Name  X1996  X2000  X2010 
1  Alnön 0.3076923 0.2608696 0.08333333 

$Ammarnäs 
    Site_Name X1996 X2011 
2 Ammarnäs 0.75 0.8 
... 
+0

यह पूरी तरह से काम किया। समझना बहुत आसान है। धन्यवाद! –

1

जूलियस 'जवाब महान है, लेकिन मैं पहले से ही लिख ...

आपका प्रश्न एक छोटे से अस्पष्ट है शुरू कर दिया के बाद से, लेकिन आप किसी भी पंक्ति को निकालना चाहते हैं

lapply(WW1_Data, na.omit) 

या आप अपने खुद के समारोह का उपयोग कर सकते, गधा: अपनी सूची में प्रत्येक data.frame से एक NA साथ अपनी सूची में प्रत्येक data.frame uming केवल इन करते हैं एक पंक्ति है:

myfun <- function(x) { 
    x[, !is.na(x)] 
} 

lapply(WW1_Data, myfun) 

या फिर इकलौते data.frame करने के लिए स्विच, यह पिघला और पंक्तियों को हटा दें:

out <- do.call(rbind, WW1_Data) 
out.m <- melt(out, id.vars='Site_Name') 
na.omit(out.m)