2015-05-06 95 views
2

我確定之前一定會問這個問題,但找不到答案。根據名稱向列表中的數據框添加值

我有數據幀的列表,像這樣:

x <- c(2, 3, 5) 
y <- c("a", "b", "c") 
df1 <- data.frame(x, y) 

x <- c(3, 6, 9) 
y <- c("a", "b", "c") 
df2 <- data.frame(x, y) 

ls <- list(df1, df2) 
names(ls) <- c("example1", "example2") 

我希望做的就是創建一個新列,text_id,基於數據幀的名稱。我可以爲特定的數據幀做法如下:

ls[[1]]$text_id <- names(ls[1]) 

我想我明白如何lapply()的作品,但我顯然不這樣做,因爲這不起作用:

ls2 <- lapply(ls, function(x){ 
ls[[x]]$text_id <- names(ls[x]) 
return(ls2)}) 

相反,我得到Error in ls[x] : invalid subscript type 'list'

我試圖as.data.frame子集之前,但也沒有工作。而且我也不確定回報的價值應該是ls2,但我還沒有那麼遠。

回答

2

您可以嘗試Map

Map(cbind, ls, text_id=names(ls)) 
+0

感謝。這很好。 – JoeF

相關問題