我正在读取来自我的硬盘上的路径(所有位于不同位置)的txt文件中的数据,这些数据来自数据框df
df <- structure(list(id = 1:4, path = structure(c(1L, 3L, 1L, 2L), .Label = c("C:/temp/TestA.txt","C:/temp/TestD/bla.txt", "C:/temp/TestZ/name1.txt"), class = "factor"), metadata = structure(c(2L, 1L, 4L, 3L), .Label = c("dummy", "test1", "UU_QQ", "ZZZ_TTT"), class = "factor")), .Names = c("id", "path", "metadata"), class = "data.frame", row.names = c(NA, -4L))
id path metadata
1 1 C:/temp/TestA.txt test1
2 2 C:/temp/TestZ/name1.txt dummy
3 3 C:/temp/TestA.txt ZZZ_TTT
4 4 C:/temp/TestD/bla.txt UU_QQ
我正在使用lapply
data_list <- lapply(df$path, read.table, sep=";", header=TRUE, fill=TRUE, fileEncoding="latin1")
我怎样才能将id
参数包含在新列表中?
答案 0 :(得分:1)
你可以这样做:
data_list <- lapply(1:nrow(df), function(i){
data_list <- read.table(df$path[i], sep=";", header=TRUE, fill=TRUE, fileEncoding="latin1")
data_list$id <- df$id[i]
return(data_list)
})
答案 1 :(得分:0)
另一个选项是Map
cbind
。我们将list
data.frames
(lapply(...)
)和'id'列作为Map
的参数传递,使用cbind
作为FUN
为data.frame
中的每个list
创建相应的“ID”列。
data_list <- Map(cbind, lapply(df$path, read.table, sep=";",
header=TRUE,fill=TRUE, fileEncoding='Latin1'), id=df$id)