【问题标题】:problems in deleting columns in csv file and storing data?删除 csv 文件中的列和存储数据的问题?
【发布时间】:2012-12-28 15:13:55
【问题描述】:

我有一个格式如下的 csv 文件:

                          1           3           1          4
1415670_at  1   8.512147859 8.196725061 8.174426394 8.62388149
1415671_at  2   9.119200527 9.190318548 9.149239039 9.211401637
1415672_at  3   10.03383593 9.575728316 10.06998673 9.735217522
1415673_at  4   5.925999419 5.692092375 5.689299161 7.807354922

我通过删除不是 1 或 2 的列对这些数据进行了一些操作:

m<-read.csv("table.csv")
smallerdat <- m[ c(1,2, grep("^X1$|^X2$|X1\\.|X2\\." , names(m) ) ) ]

现在我想再次将此结果保存到 csv 文件中,所以我这样做:

write.csv(smallerdat,"tablemodified.csv",ncolumns=length(smallerdat),sep=",")

但我收到一条错误消息:

Error in cat(list(...), file, sep, fill, labels, append) : 
  argument 1 (type 'list') cannot be handled by 'cat'

我的问题是如何将修改后的表存储到 csv 文件中。 有什么帮助吗?

【问题讨论】:

  • 您的grep 中似乎有错误。我认为您需要在第一个括号前加一个逗号,以确保 R 只选择这些列。
  • @richiemorrisroe:请查看“[”函数。您的建议将返回与原始代码相同的值。如果选择列,则不需要逗号。
  • @Manolo,ncolumns = length(smallerdat) 应该实现什么?您在write.tablewrite.csv 的文档中哪里看到这样的论点?
  • @DWin 哇,我不知道。我猜将来会为我节省一个逗号。谢谢你,并为噪音道歉。

标签: r csv


【解决方案1】:

write.csv 函数需要将文件名作为命名参数给出(就像所有 write.* 表亲一样)。 试试这个(已编辑):

write.csv(smallerdat, file="tablemodified.csv" )

我最初的猜测适用于 save() 函数而不是 write.table 变体。

【讨论】:

  • 然后删除 ncolumns 参数。
  • 文件名必须是命名参数是真的吗?我过去多次成功使用write.csv,但未指定file = "somefilename"
  • 不,这不是真的。我将保存和写入功能混为一谈
  • @DWin 感谢您的编辑,另一个问题是为什么它不在保存的文件中保留原始标题(1,1,...),但它存储 X、X1.1 等上
  • @Manolo,我认为这是在 your other question
【解决方案2】:

我正要告诉你阅读 ?read.csv 并注意指向 write.csv 的“另请参阅”部分...但它没有。

所以,请使用write.csv。 :)

【讨论】:

  • 我已经尝试过,但没有,现在还有另一个关于 sep 的错误。我把它拿出来了,还是一样的问题
  • @Manolo: write.csv 没有与write 相同的参数。您需要阅读?write.csv 以使您的代码适应您的具体情况。
猜你喜欢
  • 1970-01-01
  • 2021-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多