R 将列导出到单独的csv文件

R 将列导出到单独的csv文件,r,R,我在R中有一个data.frame: df <- structure(list(AA = c(0.3, 0.1, 0.6), BB = c(0.9, 0.4, 0.2), CC = c(1, 0.8, 0.6), DD = c(0.7, 0.5, 0.5)), .Names = c("AA", "BB", "CC", "DD"), class = "data.frame", row.names = c(NA, -3L)) df很容易使用for循环,在使用?粘贴时构造文件名: for (c

我在R中有一个data.frame:

df <- structure(list(AA = c(0.3, 0.1, 0.6), BB = c(0.9, 0.4, 0.2),
CC = c(1, 0.8, 0.6), DD = c(0.7, 0.5, 0.5)), .Names = c("AA", "BB", "CC", "DD"), class = "data.frame", row.names = c(NA, -3L))

df很容易使用for循环,在使用
?粘贴时构造文件名:

for (ci in 1:ncol(df)) {
    write.csv(df[,ci], paste("col", ci, ".csv", sep = ""))
}
现在检查是否按预期工作:

列表文件(pattern=“csv”)

使用每个列的
ci
计数器,我们对列上的data.frame进行子集并写入CSV,您可能需要write.CSV的额外选项,尤其是
row.names=FALSE
。看到他们都很高兴

(请注意,如果不使用行名称,实际上不需要逗号,是否确实需要单列CSV文件?)

这些都是非常基本的R操作,因此您应该回顾R的介绍以及使用的每个R函数和控件:

?Control 
?Extract
?seq
?ncol
?write.csv
?paste

除了@mdsummer的for循环之外,您还可以使用apply构造,它非常R-ish:)。一般的想法是获取正在使用的对象的子集,并将函数应用于这些子集中的每一个子集。我非常喜欢提供的apply函数系列。按照这条思路应该可以工作(记住加载plyr包):


plyr函数的名称表示输入是一个列表(l),该函数的输入和输出被丢弃(33;)。更多细节请参见我上面链接的文章

@mdsummer:非常感谢您的帮助-我没想到会有这么优雅的选择!正是我所需要的-单列文件需要作为另一个软件包的输入…您也可以完全正确地使用vanilla
lappy
。尽管plyr包含了一些不错的特性,比如并行化和进度条。
?Control 
?Extract
?seq
?ncol
?write.csv
?paste
l_ply(names(df), function(x) write.csv(df[[x]], paste(x, ".csv", sep = ""))