R:写入具有不同行值的CSV

时间:2016-06-07 04:42:25

标签: r csv vector dataframe

我正在尝试写入来自R的csv文件,该文件具有不同数量的行值,

*for example*,
1,2,3,4,5
2,3,6
2,3
4,3,4,5

我尝试了3次尝试,但是失败了。

  1. 我创建了一个包含1列的数据框,并将每个值分隔为逗号。但是,当我在编辑器中打开它时,它无法像常规csv那样对待,当我通过read.table

    在R中导入它时会出现问题

    for循环{

    row< - paste0(“”,row,“,”,value)

    }

    dataframe [i,]< - substring(row.temp,2)

  2. 2.我创建了一个数据框,其中缺少值NA,表示不存在的值,如

    t  NA w e NA
    NA NA t q NA
    

    然后我写csv为

    write.table(dataframe,file = "test.csv", row.names = FALSE , col.names = FALSE, na = "", quote = FALSE, sep = ",")
    

    但是,对于NA值,我有不必要的,

    1. 将每一行推送到一个向量并逐行写入csv。

      for循环{

      row.temp< - c(row.temp,values)

      } write.table(temp,file =“test.csv”,row.names = FALSE,col.names = FALSE,append = TRUE,sep =“,”)

    2. 但是,问题是每个向量值都写入每个新行。

      我想用R格式创建这个CSV文件。我可以采取什么方法来解决这个问题。我相信很多人一定要面对这个问题。谢谢!

1 个答案:

答案 0 :(得分:3)

您是否尝试过使用cat?只需将您想要的数据直接写入输出文件。

fileOut <- file("output.txt")
apply(dataframe, 1, function(x) {
                       l <- paste0(x[!is.na(x)], collapse=",")
                       cat(l, file=fileOut, append=TRUE, sep = "\n")

                    })

请注意,我将append模式设置为TRUE,以确保您不会在apply的每次迭代中覆盖上一行。

此解决方案假定数据框dataframe正如您在上述某个尝试中所述,所有列中的NA值都是缺失值。在这种情况下,我的代码段会在写入文件之前删除这些NA值。