【发布时间】:2017-12-25 17:31:32
【问题描述】:
我在 R 中创建了一个非常大的数据框,我想输出一些子集并将它们保存为 csvs。但是,我只想保留列的一个子集(即 bin 和 volume)。考虑到我正在运行一个需要使用 od 字段的循环,最简单的方法是什么?
#create data frame
od <-c("520_513", "520_513", "520_513", "520_513", "520_513",
"517_620", "517_620", "517_620", "517_620", "517_620")
bin <-c(1,2,3,4,5,1,2,3,4,5)
volume<-c(1,0,4,5,6,4,4,5,6,6)
df <-data.frame(od, bin, volume)
df1 <-split(df,df$od)
#output csvs
df1 <-for(n in names(df1))
write.table(df1[[n]],
row.names=F,
col.names=F,
sep=",",
file=paste( n,".csv"))
这是我为 517_620 得到的输出:
od bin volume
--------------------------------
517_620 1 4
517_620 2 4
517_620 3 5
517_620 4 6
517_620 5 6
但我想要这个:
bin volume
--------------------
1 4
2 4
3 5
4 6
5 6
谢谢!
【问题讨论】:
-
write.table(df1[[n]][,2:3]或write.table(df1[[n]][,c("bin", "volume")]能完成这项工作吗?作为您编写的循环的第一行的替换,即。 -
for-loops 返回 NULL,所以永远不要这样做...df1 <- for -
伯恩哈德,是的,这是一种享受 - 谢谢!
-
42- 抱歉,我不明白你的意思
-
运行该代码后,查找
df1。它将不存在,因为您通过将其分配为 NULL 将其删除。
标签: r loops data.table