2012-01-11 3 views
2

Итак, у меня есть кадр данных, который я сформировал, объединив списки различной длины, расширив более короткие с помощью NA.Напишите таблицу с новой строкой вместо NA

Пример:

  [,1] [,2]  [,3] [,4] [,5]  [,6] 
PAHS.147A "TNF" "TRAF6" NA NA  NA  NA  
PAHS.122A "TRAF6" "TRIM25" NA NA  NA  NA  
PAHS.012A "TRAF3" "TRAF4" NA NA  NA  NA  
PAHS.3012A "CD40" "CD40LG" "CD5" "CD70" "CDKN1A" "CEBPB" 
PAHS.038A "VEGFA" "VWF" NA NA  NA  NA  
PAHS.084A "ULK2" "UVRAG" NA NA  NA  NA 

Я хочу использовать write.table() написать таблицу в табуляцией текстовый файл, но вместо того, чтобы NA «с, я просто хочу, чтобы начать новую линию, когда строка достигает NA. Есть ли простой способ сделать это?

Я попытался установить NA на "", но у меня все еще были вкладки, указывающие на отсутствующие значения. Мне просто нужна новая строка в этом месте вместо вкладок.

ответ

4

Поскольку write.table предназначен для вывода обычных объектов (data.frames и матриц) с каким-то разделителем, вы, вероятно, получите больше сцепление с одним из cat, write или writeLines:

txt <- data.frame(a="a", b="b", c=NA, d=NA ,e=NA) 
txt <- txt[rep(1,10),] # 10 copies 
apply(txt,1,function(x) cat(x[!is.na(x)], "\n", file="out.txt", append=TRUE)) 
+2

+1 , Это мило. Следуя за тем, чтобы получить файл с разделителями табуляции, замените 'function (x)' в последней строке следующим: 'cat (paste (x [! Is.na (x)], collapse =" \ t "), sep = "\ n", file = "out.txt", append = TRUE). –

+0

Вкладки. Я забыл вкладки. Спасибо за исправление этого упущения. –

Смежные вопросы