在R语言中按规则将两个等长向量合并为一个向量
解决R语言中合并两个含NA/空字符串向量的问题
这问题我之前处理网页抓取数据时也碰到过,刚好有几种简单直接的方法可以实现你的需求,下面给你详细说明:
先构造示例数据
首先我们先把你提到的向量还原出来,方便测试代码:
vect_1 <- c("Description 1", NA, "Description 3") vect_2 <- c("", "Description 2", "")
方法一:基础R原生实现(无需额外包)
用ifelse()函数就能直接搞定,逻辑很直观:判断当前向量元素是NA或者空字符串时,就取另一个向量对应位置的元素,否则保留当前元素。
vect_3 <- ifelse(is.na(vect_1) | vect_1 == "", vect_2, vect_1)
方法二:用dplyr包的coalesce()函数(更简洁)
如果你平时习惯用tidyverse系列工具,可以先把空字符串转换成NA,再用coalesce()函数自动取每个位置第一个非NA的元素:
library(dplyr) # 先清理空字符串为NA vect_1_clean <- ifelse(vect_1 == "", NA, vect_1) vect_2_clean <- ifelse(vect_2 == "", NA, vect_2) # 合并向量 vect_3 <- coalesce(vect_1_clean, vect_2_clean)
验证结果
运行完上面任意一种方法后,查看结果就能得到你想要的合并向量:
vect_3 # 输出结果: # [1] "Description 1" "Description 2" "Description 3"
内容的提问来源于stack exchange,提问作者Carolin
相关产品推荐
相关产品推荐

