如何直接操作myvec与all_variable为缺失命名元素填充0?
解决方法
这里提供两种直接操作myvec和all_variable的简洁方法:
方法一:初始化全0向量后替换匹配值
这是最直观的实现方式,先创建以all_variable为命名、值全为0的向量,再将myvec中存在的对应命名位置替换为myvec的取值:
# 初始化全0向量,命名为all_variable的元素 result <- setNames(rep(0, length(all_variable)), all_variable) # 将myvec中存在的命名位置替换为对应值 result[names(myvec)] <- myvec # 查看结果 result #> a b d #> 0 1 0
方法二:利用match函数一次性构造
通过match函数匹配all_variable和myvec的命名,对匹配不到的位置填充0:
result <- setNames( ifelse(is.na(match(all_variable, names(myvec))), 0, myvec[match(all_variable, names(myvec))]), all_variable ) # 查看结果 result #> a b d #> 0 1 0
内容的提问来源于stack exchange,提问作者one
相关产品推荐
相关产品推荐

