【发布时间】:2021-10-15 21:10:27
【问题描述】:
您好,我正在尝试从我的环境中导出多个 csv,以将它们转移到 matlab。为了做到这一点,我从Write data frames in environment into separate csv files 找到了一个有用的循环,但是运行此代码包括我不想要的 csv 中的行号。谁能告诉我如何阻止这种情况发生?我在这篇帖子Prevent row names to be written to file when using write.csv 上看到您可以使用write.csv(t, "t.csv", row.names=FALSE) 之类的东西,但我不知道如何将其合并到循环中。如果可能的话,我还想在使用它来拆分数据帧之后摆脱 BIposterior$d 列。谢谢。
## Read in csv
BIposterior<-read.csv("BIPDF.csv",header=TRUE)
## Get rid of useless columns
BIposterior$X.1=NULL
BIposterior$n=NULL
BIposterior$X=NULL
BIposterior$x=NULL
BIposterior$a=NULL
BIposterior$th0=NULL
BIposterior$th1=NULL
## Create a loop to create separate data frames
for(i in unique(BIposterior$d)) {
nam <- paste("BIposterior", i, sep = ".")
assign(nam, BIposterior[BIposterior$d==i,])
}
## Export all of the csvs
files <- mget(ls())
for (i in 1:length(files)){
write.csv(files[[i]], paste(names(files[i]), ".csv", sep = ""))
}
### Data
structure(list(counts = c(0.00000762700016727025, 0.0000109607070538136,
0.0000154982683282787, 0.0000215453927859112, 0.0000294581590232964,
0.0000396276435633489), d = c(1L, 1L, 1L, 1L, 1L, 1L), year = c(2002.25707698199,
2002.27255361611, 2002.28803025023, 2002.30350688435, 2002.31898351848,
2002.3344601526)), row.names = c(NA, 6L), class = "data.frame")
【问题讨论】:
-
只需将
row.names=FALSE添加到您的write.csv()电话:write.csv(files[[i]], paste(names(files[i]), ".csv", sep = ""), row.names=FALSE)。 PS。您应该查看一个名为split()的函数,并了解如何使用列表而不是在全局环境中分配所有内容。 -
谢谢辛德里
标签: r