2016-03-12 86 views
0

我有一個名爲k的列表,其中嵌入了三個單獨的data.framets1,ts2ts3data.frame中的每一個都具有以下列結構:X1,X2,... X10R中的列表的單獨元素並創建一個新列表

我想創建一個新的列表具有相同data.frame名稱(ts1ts2ts3),但data.frame唯一包含X1列。

所以,下:

set.seed(1337) 
ts1 <- data.frame(replicate(10,sample(0:1,10,rep=TRUE))) 
ts2 <- data.frame(replicate(10,sample(0:1,10,rep=TRUE))) 
ts3 <- data.frame(replicate(10,sample(0:1,10,rep=TRUE))) 

k<- list(ts1=ts1,ts2=ts2,ts3=ts3) 

輸出應爲:

$ TS1 X1 1 1 2 1 3 0 4 0 5 0 6 0 7 1 8 0 9 0 10 0

$ TS2 X1 1 0 2 0 3 1 4 1 5 0 6 0 7 0 8 0 9 0 10 0

$ TS3 X1 1 1 2 0 3 0 4 0 5 1 6 0 7 1 8 0 9 0 10 1

我寧願這樣做使用lapply在R

+2

'lapply(K, '[',1)'和既然已經mapply標記'mapply( '[',K,1,簡化= FALSE)' – rawr

回答

2

保留目錄結構

,保留列表結構& data.frame名稱,用途:

helper = function(x,p){ 
    x[,p, drop = F] 
} 

m = lapply(k,FUN=helper, p = "X1") 

p允許您選擇列名

drop = F防止被刪除的信息。

使用lapply根據要求返回listdata.frame結構。

合併總data.frame

關於這個問題的第一眼,我寫了下面。以上是具有適當響應的編輯。

最好的方法是使用rbindlist()data.table

install.packages("data.table") 
library("data.table") 
total = rbindlist(k) 

x1 = total[,"X1", with = F] 
+1

感謝您的回覆,但這並不回答我的問題,我想創建一個新列表,仍然保留元素名稱ts1,ts2和ts3,但它只應包含X1 – forecaster

+0

@forecaster感謝您的澄清,請請參閱編輯。 – coatless

相關問題