【发布时间】:2019-07-12 03:30:24
【问题描述】:
我正在处理以下问题,我有两个向量:
index1<-c(10 ,11 ,12 ,13 ,14 ,15 ,16 ,17 ,18 ,19 ,20 ,21, 22, 23, 24, 25, 26, 27, 28, 29)
index2<-c(17 ,18, 19, 20 ,22 ,23, 24, 25, 26, 27, 28, 29, 30 ,31 ,32, 33 ,42, 43, 44,45, 46 ,47 ,48, 49, 50, 51, 52 ,53, 54 ,55, 56)
我想保留所有可以写为2*index1[i]+k 的组件index2[j],其中k=0,1,2,3。对于一些i in 1:length(index1),j in 1:length(index2)
这是,例如 index2 的第一个组件是 17,这不能写成2*index1[i]+k,所以这个第一个组件应该被删除(或替换为 NA)。
我很难弄清楚如何做到这一点,我试图做一个循环但没有成功。
for(j in 1:length(index2)){
for(i in 1:length(index1)){
for(k in 0:3){
if (index2[j]!=(2*index1[i]+k)){index2[j]=NA}else{index2[j]=index2[j]}}}}
在这个特定示例中,所需的输出是一个向量 index2_refined,它包含 index2 的所有组件,但第一个组件除外,即
c( 20 ,22 ,23, 24, 25, 26, 27, 28, 29, 30 ,31 ,32, 33 ,42, 43, 44,45, 46 ,47 ,48, 49, 50, 51, 52 ,53, 54 ,55, 56)
任何帮助将不胜感激。
【问题讨论】:
-
那么这个特定示例的期望输出是什么,以便可以测试和验证可能的解决方案。
-
嗨,对不起,18 不能写成 2*index1[i]+k 太正确了?
-
你说得对,我把事情搞砸了,谢谢指出。
标签: r loops if-statement vector