我有以下的向量。
vector1 <- c("A", "B", "C" , NA, NA, "D")
我想应用这个函数粘贴,忽略vector1中的NA值。
vector2 <- paste("#", vector1, "something", sep = "")
得此
vector2 <- c("#Asomething", "#Bsomething" , "#Csomething", NA, NA, "#Dsomething")
我想避免使用sub的前帖子解决方案,在这里,我只是把字符串中含有字母 "NA "的元素去掉。
我看到一个类似的问题。在 paste() 中抑制 NA 但是他们想忽略NA,直接粘贴#something,而我想显示NA。
你可以把它和ifelse结合起来,比如说
ifelse(is.na(vector1), NA, paste("#", vector1, "something" ,sep = ""))
虽然这个被标记为已回答,但也请看@hello_friend的回答,可能更合适。
基础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"
创建于2020-05-04,由 重读包 (v0.3.0)