使用tidyverse合并两个向量

使用tidyverse合并两个向量,r,dplyr,tidyr,tidyverse,R,Dplyr,Tidyr,Tidyverse,我下面有三个值。我要做的是创建一个与查找长度相同的向量,其中NA元素的值为replace,其余元素的值为数据中相应位置的值。例如 lookup = c(NA, NA, 1, 2, NA, 3, NA) data = c("user_3", "user_4", "user_6") replace = "no_user_data" 然后期望的输出将是:c(“无用户数据”、“无用户数据”、“用户3”、“用户4”、“无用户数据”、“用户6”、“无用户数据”) 这里的关键限制是我希望尽可能多地利用tid

我下面有三个值。我要做的是创建一个与
查找
长度相同的向量,其中
NA
元素的值为
replace
,其余元素的值为
数据
中相应位置的值。例如

lookup = c(NA, NA, 1, 2, NA, 3, NA)
data = c("user_3", "user_4", "user_6")
replace = "no_user_data"
然后期望的输出将是:
c(“无用户数据”、“无用户数据”、“用户3”、“用户4”、“无用户数据”、“用户6”、“无用户数据”)

这里的关键限制是我希望尽可能多地利用
tidyverse
。我当前的解决方案如下所示:

data <- c(data, replace)
lookup[is.na(lookup)] <- length(data)
data <- data[lookup]

data您可以使用
dplyr::coalesce
函数,这是在向量中执行以下操作的好方法:

dplyr::coalesce(data[lookup], replace)

# [1] "no_user_data" "no_user_data" "user_3"       "user_4"       "no_user_data"
# [6] "user_6"       "no_user_data"

您可以使用
dplyr::coalesce
函数,这是在向量中执行以下操作的好方法:

dplyr::coalesce(data[lookup], replace)

# [1] "no_user_data" "no_user_data" "user_3"       "user_4"       "no_user_data"
# [6] "user_6"       "no_user_data"

我们还可以使用
replace
from
base R

replace(data[lookup], is.na(lookup), replace)
#[1] "no_user_data" "no_user_data" "user_3"       "user_4"       "no_user_data"
#[6] "user_6"       "no_user_data"

我们还可以使用
replace
from
base R

replace(data[lookup], is.na(lookup), replace)
#[1] "no_user_data" "no_user_data" "user_3"       "user_4"       "no_user_data"
#[6] "user_6"       "no_user_data"

如果你问我,tidyverse应该是问题的答案,而不是问题本身。有什么特别的原因让你这么做吗?@mpjdem-我曾经看到过一个建议,建议使用
add
subtract
等函数,这样你就可以执行
1%>%add(2)
并获得
3
。我们还没有达到顶峰。@tidyverse
应该是问题的答案,而不是问题本身。有什么特别的原因让你这么做吗?@mpjdem-我曾经看到过一个建议,建议使用
add
subtract
等函数,这样你就可以执行
1%>%add(2)
并获得
3
。我们还没有达到顶峰。@最近的邮件如
1%>%`+`(2)
(或
1%>%”+“(2)
pmax(数据[lookup],replace,na.rm=TRUE)
在基本R中。
pmax(数据[lookup],replace,na.rm=TRUE)
在基本R中。