-4

我在文件中有数据,而且行的长度不相等。目标是修改该文件的第 5 列。为此,我导入文件,在行上循环,并在 data[i, 1] = 0 时跳过(当行长度小于 5 时)。但显然,R 用 NA 填充,因为在我的输出文件中,我在长度小于 5 的行上有 NA。在 write.csv 中,na="" 删除 NA 但不删除逗号。我想要这样的东西

1  ,   2,   4, 5.1, 7.8, 6, 6, 9.5
5  ,   4, 5.3,   5,   4,    ,   ,     
7.6, 9.6, 4.5, 0.5,   4, 9, 8, 7.4

如何在第二行中删除 4 之后的逗号?由于 X 原因,我需要在 write.csv 中保留 sep=", " 。这里解释的时间太长了谢谢

4

2 回答 2

1

试试这个(在命令行上):

sed s/,+$//g output.csv > clean_output.csv

这将从每行末尾贪婪地删除尾随逗号,因此请确保填充最后一列。您可能想添加一个虚拟的“填充”列,以确保此处有数据以确保此命令不会“破坏”您的 csv。

我仍然强烈怀疑您实际上并不想要/不需要像您所描述的那样清理文件。参考对您的原始问题提出的评论/问题。

于 2013-07-08T15:47:16.420 回答
0

尽管我不确定这是一个好主意,但到底是什么,这是一个尝试:

 write.a.line <- function (l, f) cat(paste(na.omit(l), collapse=","), "\n", sep="", append=TRUE, file=f)
 apply(my.matrix, 2, write.a.line, f="./tmp.csv")
于 2013-07-08T16:02:20.980 回答