R 粘贴 - 忽略我粘贴的至少一个元素是 NA 的情况
R Paste - ignore cases where at least one element I am pasting is NA
我有以下向量:
vector1 <- c("A", "B", "C" , NA, NA, "D")
我想应用此函数粘贴忽略 vector1 中的 NA 值
vector2 <- paste("#", vector1, "something", sep = "")
并获得这个
vector2 <- c("#Asomething", "#Bsomething" , "#Csomething", NA, NA, "#Dsomething")
我想避免使用 sub 的 ex-post 解决方案,我只是去掉了字符串中包含字母 "NA" 的元素。
我看到了一个类似的问题:suppress NAs in paste()但是他们想忽略 NA 并简单地粘贴#something 而我希望显示 NA。
基础 R 解决方案:
vector2 <- ifelse(is.na(vector1), NA_character_, paste("#", vector1, "something" ,sep = ""))
我认为您需要将 sapply()
与匿名函数一起使用。
请看下面的代码,它可以满足您的需求。
vector1 <- c("A", "B" , "C" ,NA_character_ , NA_character_, "D")
vector2 <- sapply( vector1, function( x )
ifelse( is.na( x ),
NA_character_,
paste("#", x, "something" ,sep = "") ),
USE.NAMES = FALSE
)
vector2
#> [1] "#Asomething" "#Bsomething" "#Csomething" NA NA
#> [6] "#Dsomething"
由 reprex package (v0.3.0)
于 2020-05-04 创建
你可以像这样将它与 ifelse 结合起来
ifelse(is.na(vector1), NA, paste("#", vector1, "something" ,sep = ""))
虽然这已被标记为已回答,但也请参阅@hello_friend 的回答,这可能更合适。
我有以下向量:
vector1 <- c("A", "B", "C" , NA, NA, "D")
我想应用此函数粘贴忽略 vector1 中的 NA 值
vector2 <- paste("#", vector1, "something", sep = "")
并获得这个
vector2 <- c("#Asomething", "#Bsomething" , "#Csomething", NA, NA, "#Dsomething")
我想避免使用 sub 的 ex-post 解决方案,我只是去掉了字符串中包含字母 "NA" 的元素。
我看到了一个类似的问题:suppress NAs in paste()但是他们想忽略 NA 并简单地粘贴#something 而我希望显示 NA。
基础 R 解决方案:
vector2 <- ifelse(is.na(vector1), NA_character_, paste("#", vector1, "something" ,sep = ""))
我认为您需要将 sapply()
与匿名函数一起使用。
请看下面的代码,它可以满足您的需求。
vector1 <- c("A", "B" , "C" ,NA_character_ , NA_character_, "D")
vector2 <- sapply( vector1, function( x )
ifelse( is.na( x ),
NA_character_,
paste("#", x, "something" ,sep = "") ),
USE.NAMES = FALSE
)
vector2
#> [1] "#Asomething" "#Bsomething" "#Csomething" NA NA
#> [6] "#Dsomething"
由 reprex package (v0.3.0)
于 2020-05-04 创建你可以像这样将它与 ifelse 结合起来
ifelse(is.na(vector1), NA, paste("#", vector1, "something" ,sep = ""))
虽然这已被标记为已回答,但也请参阅@hello_friend 的回答,这可能更合适。