У меня есть фрейм данных dd2
с сотнями столбцов, и мне нужно вставить все значения этих столбцов вместе, опуская любые значения NA
. Если я сделаю что-то вроде этого
apply(dd2, 1, paste, collapse=",")
на самом деле он включает NA
s как строку "NA"
. Я хочу избежать этого. Я также мог бы сделать так, как показано ниже, но это предполагает, что я буду работать с каждым отдельным столбцом за раз, чтобы получить результат.
result <- cbind(
dd2,
combination = paste(dd2[,2], replace(dd2[,3], is.na(dd2[,3]), ""), sep = ",")
)
Есть ли какой-нибудь эффективный способ сделать это? Вот пример данных:
dd2 <- structure(c("A", "B", "C", "D", "E", "AK2", "HFM1", NA, "TRR",
"RTT", NA, "PPT", "TRR", "RTT", NA, "PPT", NA, NA, "GGT", NA), .Dim = c(5L,
4L), .Dimnames = list(NULL, c("sample_id", "plant", "animal",
"more")))
toString
. Вам придется использоватьpaste
. 13.06.2018paste
заключается вNA
ячейках. Я мог бы использовать иna.omit
, но тогда возникают проблемы с разным количеством строк. У него должна быть возможность просто игнорироватьNA
ячейки. 14.06.2018stringr::str_replace_na(c(NA, "abc", "def"), replacement='')
. Как правило, обратитесь кstringr
для чего-либо более сложного, чем простые конкатенации. 21.11.2018stringr::str_replace_na(dd2, replacement='')
не дает желаемого результата.replace
в Base R можно было использовать для того же самого. 21.11.2018