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