Ben Bolker的paste2解决方案产生了一个""粘贴的字符串包含NA在同一位置的时间.像这样,
> paste2(c("a","b", "c", NA), c("A","B", NA, NA))
[1] "a, A" "b, B" "c" ""
Run Code Online (Sandbox Code Playgroud)
第四个元素是一个""而不是NA像这样,
[1] "a, A" "b, B" "c" NA
Run Code Online (Sandbox Code Playgroud)
我正在为能解决这个问题的人提供这笔小额奖金.
我已经阅读了帮助页面?paste,但我不明白如何让R忽略NAs.我做了以下,
foo <- LETTERS[1:4]
foo[4] <- NA
foo
[1] "A" "B" "C" NA
paste(1:4, foo, sep = ", ")
Run Code Online (Sandbox Code Playgroud)
得到
[1] "1, A" "2, B" "3, C" "4, NA"
Run Code Online (Sandbox Code Playgroud)
我想得到什么,
[1] "1, A" "2, B" "3, C" "4" …Run Code Online (Sandbox Code Playgroud) 我有一个dd2包含数百列的数据框,我需要做的是将所有这些列值粘贴在一起,省略任何NA值.如果我做这样的事情
apply(dd2, 1, paste, collapse=",")
Run Code Online (Sandbox Code Playgroud)
它实际上包括NAs作为"NA"字符串.我想避免这种情况.我也可以如下所示,但是这会让我一次为每个单独的列工作以获得结果.
result <- cbind(
dd2,
combination = paste(dd2[,2], replace(dd2[,3], is.na(dd2[,3]), ""), sep = ",")
)
Run Code Online (Sandbox Code Playgroud)
有没有有效的方法呢?以下是示例数据:
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")))
Run Code Online (Sandbox Code Playgroud)