-4

ファイルにデータがあり、その行の長さが等しくありません。目標は、そのファイルの 5 列目を変更することです。そのために、ファイルをインポートし、行をループして、data[i, 1] = 0 の場合 (行の長さが 5 未満の場合) はスキップします。しかし、どうやら、出力ファイルでは、長さが5未満の行にNAがあったため、Rは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

2 行目の 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 に答える