关于悬赏

当粘贴的字符串在相同位置包含NA时,Ben Bolkerpaste2解决方案生成"".这样地,

> 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忽略NA.我做了以下几件事,

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"而言:似乎最直接的方法就是将paste2返回的值修改为NA,当值为""

 paste3 <- function(...,sep=", ") {
     L <- list(...)
     L <- lapply(L,function(x) {x[is.na(x)] <- ""; x})
     ret <-gsub(paste0("(^",sep,"|",sep,"$)"),"",
                 gsub(paste0(sep,sep),sep,
                      do.call(paste,c(L,list(sep=sep)))))
     is.na(ret) <- ret==""
     ret
     }
 val<- paste3(c("a","b", "c", NA), c("A","B", NA, NA))
 val
#[1] "a, A" "b, B" "c"    NA    

R相关问答推荐

for循环和if else在R中

R gtsummary tBL_summary,包含分层和两个独立分组变量

使用na.locf在长格式数据集中输入具有多个时间点的数据集

更改网格的crs以匹配简单要素点对象的crs

使用Shiny组合和显示复制和粘贴的数据

从嵌套列表中智能提取线性模型系数

在R中使用数据集名称

在R中无法读入具有Readxl和lApply的数据集

如何得到每四个元素向量R?

如何同时从多个列表中获取名字?

计算两列中满足特定条件连续行之间的平均值

根据纬度和距离连接两个数据集

将项粘贴到向量中,并将它们分组为x的倍数,用空格分隔

如何在R中使用hmm TMB提前一步预测观察到的状态?

如何将一些单元格的内容随机 Select 到一个数据框中?

如何计算每12行的平均数?

使用ifElse语句在ggploy中设置aes y值

快速合并R内的值

如何从嵌套数据中自动创建命名对象?在R中

如何使用包metaviz更改标签的小数位数?