【发布时间】:2012-11-20 08:47:47
【问题描述】:
关于赏金
Ben Bolker's paste2-当粘贴的字符串在同一位置包含NA's 时,会生成""。像这样,
> paste2(c("a","b", "c", NA), c("A","B", NA, NA))
[1] "a, A" "b, B" "c" ""
第四个元素是"" 而不是NA 像这样,
[1] "a, A" "b, B" "c" NA
我为任何能够解决此问题的人提供这笔小额赏金。
原问题
我已阅读帮助页面 ?paste,但我不明白如何让 R 忽略 NAs。我执行以下操作,
foo <- LETTERS[1:4]
foo[4] <- NA
foo
[1] "A" "B" "C" NA
paste(1:4, foo, sep = ", ")
得到
[1] "1, A" "2, B" "3, C" "4, NA"
我想得到什么,
[1] "1, A" "2, B" "3, C" "4"
我可以这样做,
sub(', NA$', '', paste(1:4, foo, sep = ", "))
[1] "1, A" "2, B" "3, C" "4"
但这似乎是绕道而行。
【问题讨论】:
-
如果你有一个经常性的需求,你可以用 na.rm 参数来实现你的 paste2(...,sep,collapse,na.rm=FALE) 。
-
@agstudy,我该怎么做?
-
stringr::str_replace_na(c(NA, "abc", "def"), replacement="")-- 2018年方式 -
用空字符串替换 NA 不适用于粘贴。从
paste(1:4, stringr::str_replace_na(foo, replacement=""), sep=", ")你得到"1, A" "2, B" "3, C" "4, "