【问题标题】:R : Write CSV that has varying row valuesR:写入具有不同行值的 CSV
【发布时间】:2016-10-06 20:10:16
【问题描述】:

我正在尝试从 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 时存在问题@

    forloop{

    }

    dataframe[i,]

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。

    forloop{

    row.temp

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

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

我想用 R 格式创建这个 CSV 文件。我可以采取什么方法来解决这个问题。相信很多人都遇到过这个问题。谢谢!!

【问题讨论】:

  • 我正在使用“arules”关联库,对于 read.transactions() 方法,它需要 CSV 数据具有该结构。我无法让具有 NA 值的 data.frame 工作,因为每个值都应该是唯一的(NA 是重复的)。
  • @anz 你在 R 中使用arules?你能粘贴你得到的错误吗?
  • 对不起,我确实得到了使用方法 #2 识别 csv 的规则。我想要一个更干净的 csv 文件,并且我想避免为此使用另一种编程语言。稍后我将需要此 csv 数据的更简洁版本以进行发布和处理。我还没有正确验证,但我认为它有点慢。我确实通过使用 Java 操作 csv 文件尝试了一个更简洁的版本。

标签: r csv vector dataframe


【解决方案1】:

您是否尝试过使用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 值都是缺失值。在这种情况下,我的 sn-p 在写入文件之前删除了这些 NA 值。

【讨论】:

  • 我想我只得到了数据框的最后一行。它似乎已经覆盖了之前的行。
  • @anz 由于某种原因,我也遇到了writeLines 的问题。切换到cat 似乎已经开始工作了。
  • 即使有猫,它仍然只写最后一行。从 cat 文档中,附加逻辑。仅当参数文件是文件名(而不是连接或“|cmd”)时才使用。如果 TRUE 输出将附加到文件中;否则,它将覆盖文件的内容。
  • 此代码在我测试时对我有用,并且我得到了符合您期望的 CSV 输出。听起来append=TRUE 模式在您的设置中不起作用。
  • 好吧,追加在我这边没有用。但是我采用了与您类似的方法(如我原始帖子中的 #1 所述),创建一个字符串并将其输出到文件。我最初方法的问题是我在 paste0() 方法中连接了 "," 而不是使用 sep="," 。我想这会在文件编码和所有方面产生某种差异。我创建了一个包含所有这些字符串的数据框,并使用 write.table() 写入文件。有效。谢谢!!你当然帮我找到了让我烦了 5 个小时的 bug。干杯!!
猜你喜欢
  • 1970-01-01
  • 2012-03-30
  • 2019-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-24
相关资源
最近更新 更多