R语言如何从给定向量中提取可被3整除的元素生成子向量
R语言向量元素按整除规则筛选方法
直接实现代码
你可以直接用以下代码得到目标子向量:
v <- c(1,3,5,7,8,9,11,13,15,17,19,21) sub_v <- v[v %% 3 == 0]
运行后sub_v的结果为 3 9 15 21,完全符合需求。
原理说明
%%是R的向量化取余运算符,对向量操作时会自动遍历每个元素计算除以右侧数值的余数,返回和原向量等长的余数向量:你输入v %% 3会得到结果1 0 2 1 2 0 2 1 0 2 1 0- 后续追加
== 0是对余数向量的每个元素做等于判断,返回等长的逻辑向量:上述余数向量判断后得到FALSE TRUE FALSE FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE TRUE - R支持逻辑向量索引:将逻辑向量放入原向量的方括号
[]中,就会自动提取所有逻辑值为TRUE对应位置的元素,完成筛选。
通用规则
这类数值条件筛选的逻辑可以通用:只要把方括号内的判断条件替换为你需要的规则即可,比如要筛选大于10的元素可以写v[v > 10],要筛选除以5余2的元素可以写v[v %%5 ==2]。
内容的提问来源于stack exchange,提问作者Oscar Colt
相关产品推荐
相关产品推荐

