R:在单独的单元格中写入(向量)数据

时间:2013-11-11 10:48:44

标签: r csv

我在编写输出数据方面遇到了问题。我做了这样的指示:

myfiles <- list.files("D:/dolnyslask/2011/after", pattern=".csv")
for (j in 1:length(myfiles)) {
  thisfile <- read.csv(myfiles[j], header = T, sep=";", na.string="NA", comment.char="")
  for (i in thisfile) {
    x = sd(i, na.rm=T)
    y = length (na.omit(i))
    if (y == 0) {
      cat(paste(rep(c("-"),11)), file=myfiles[j], append=T, sep="\t")
      cat(paste(length(na.omit(i))), file=myfiles[j], append=T, sep="\n")     
    } else if (is.na(x) || x == 0) {
      cat(paste(format(min(i, na.rm=T)), format(mean(i, na.rm=T)), format(max(i, na.rm=T)), format(median(i, na.rm=T)), format(sd(i, na.rm=T)), format(mean(i, na.rm=T)), format(mean(i, na.rm=T)), format(mean(i, na.rm=T) - mean(i, na.rm=T)), format(mean(i, na.rm=T) - mean(i, na.rm=T)), format((mean(i, na.rm=T) - mean(i, na.rm=T))/median(i, na.rm=T)), format((mean(i, na.rm=T) - mean(i, na.rm=T))/median(i, na.rm=T)), digits=5), file=myfiles[j], append=T, sep="\t")
      cat(paste(length(na.omit(i))), file=myfiles[j], append=T, sep="\n")
    } else { 
      cat(paste(format(min(i, na.rm=T)), format(mean(i, na.rm=T)), format(max(i, na.rm=T)), format(median(i, na.rm=T)), format(sd(i, na.rm=T)), format(t.test(na.omit(i), conf.level=0.90)$conf.int), format(t.test(na.omit(i), conf.level=0.90)$conf.int - mean(i, na.rm=T)), format((t.test(na.omit(i), conf.level=0.90)$conf.int - mean(i, na.rm=T))/median(i, na.rm=T)), digits=5), file=myfiles[j], append=T, sep="\t")
      cat(paste(length(na.omit(i))), file=myfiles[j], append=T, sep="\n")
    }
  }
}

我的csv文件如下所示:

NA  NA  NA  NA  NA  NA  2   NA  NA  12.1    NA
NA  NA  NA  NA  NA  NA  4   NA  NA  10  NA
NA  NA  NA  NA  NA  NA  12.1    NA  NA  8.5 NA
NA  NA  NA  NA  NA  NA  14.8    NA  NA  6   NA
NA  NA  NA  NA  NA  NA  15  NA  NA  7.4 NA

R给我一个好的结果,但只在一个单元格中(在csv文件中) - 但我需要每个分开的列。我试图改变“sep”上的种类,但它没有用。

我该怎么办?

1 个答案:

答案 0 :(得分:0)

正如评论中所建议的,为每个值分配一个data.frame列然后write.csv应该可以工作:

df <- data.frame(meani = mean(i), sdi = sd(i))
write.csv(df,'df.csv')

但是再次阅读也许你忘了指定,打开文件时要阅读哪种分隔。我建议使用sep="\t"创建一个tab-delimited文件并打开它。