我在列表中有多个data.frames(26)。 dfs具有相同的结构,但我想只工作/导出两个不同的列。我可以将所有dfs导出到单个dfs
for(i in filelist){
list2env(setNames(filelist, paste0("names(filelist[[i]])",
seq_along(filelist))), envir = parent.frame())}
我可以删除所有dfs中的列
for(i in seq_along(filelist)){filelist[[i]]$V5 = NULL}
但我不能单独导出其他列。从单个data.frame,它只是工作:
token_out_mk_totatyafiak_02.txt = out_mk_totatyafiak_02.txt["V2"]
type_out_mk_totatyafiak_02.txt = out_mk_totatyafiak_02.txt["V1"]
当我尝试这些
时for(i in seq_along(filelist)){n[[i]] <- filelist[[i]]$V2}
for(i in seq_along(filelist)){
sapply(filelist, function(x) n <- filelist[[i]]$V2)
}
我实现的最多,我可以读取所有26个dfs中最后一个df的第二列。
V2看起来像:
V2
1 az
2 a
3 f
ekete
4 folt
(等等,这些都是匈牙利短篇小说......)
答案 0 :(得分:1)
根据您的预期结果,您有多种选择。
如果您想要一个新列表,您的数据框只包含一个特定列。
new_filelist <-
lapply(filelist, function(df){
df["V2"]
})
如果要将所有数据框的特定列导出到文件,请在单独的文件中(在本例中为.txt文件)。
这需要命名列表中的数据框。如果不是,则可以将names(filelist)
替换为1:length(filelist)
。
lapply(names(filelist), function(df){
df_filename <- paste0(df, ".txt")
write.table(filelist[[df]]["V2"], df_filename)
})
如果您想在环境中为所有数据框分配一个特定列的新对象。
同样,这需要命名您的数据框。
lapply(names(filelist), function(df){
assign(df, filelist[[df]]["V2"], envir = .GlobalEnv)
})