2013-07-08 99 views
-5

我有文件中的數據,並且行長度不等。目標是修改該文件的第5列。爲此,我導入文件,在行上循環,並在data [i,1] = 0時(當行長度小於5時)跳過。但顯然,R填充NA,因爲在我的輸出文件中,我的NA長度小於5.在write.csv中,na =「」刪除NA而不是逗號。我想要類似這樣的內容刪除逗號「,」如果在R中未使用(寫入csv)

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 ..太長,在這裏解釋 感謝

+0

是逗號真的不用的?你期望有多少列?如果有空列,則需要使用分隔符來顯示空值將落入的位置。 – A5C1D2H2I1M1N2O1R2T1

+3

你能清理這個問題嗎?提供一個樣本數據集和樣本,說明如何將其寫入csv? – asb

+2

逗號是否表示要在CSV中表示的有效列中的空字段?如果是這樣,你可能需要這些逗號。否則,你可以刪除他們後,使用替代正則表達式在像'sed'這樣的工具編寫csv –

回答

1

試試這個(在命令行):

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

這將貪婪從每行末尾刪除尾隨逗號,因此請確保填充最後一列。您可能需要添加一個虛擬「填充」列,以確保此處有數據以確保此命令不會「破壞」您的csv。

我仍然強烈懷疑您實際上並不想按照您所描述的那樣清理文件。參考對原始問題提出的意見/問題。

+0

我打算在R:p之外的命令行上運行它。那也會起作用 –

+0

好的。但是這個假設你有Linux家族系統... – agstudy

+0

是的agstudy ..那不是我的例子 – David

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")