满足在r项目的元素传染媒介

时间:2017-04-05 23:29:09

标签: r

代码R中的

for (i in 1:10) {
  if (!i %% 2){
    next
  }
  print(i)
}

我有输出

[1] 1
[1] 3
[1] 5
[1] 7
[1] 9

但我需要满足那个条件的i的向量,即(1,3,5,7,9)。 如何获得向量(事先不知道向量维度“长度”)?

以上是我的问题的一个例子:

 x=c(0.1,0.4,0.5)
   y=c(0.2,0.3,0.6,0.7) 

 cont1=0
  for(i in 1:(length(x)+1)){

    for(j in 1:(length(y)+1)){

        if(round((abs((j-1)-(i-1)*(length(y)/length(x))) ),3)  < round( max.v.d,3) ) {
         cont1=cont1+1
         print(paste(i-1,j-1))
          }

    }
  }

输出

[1] "0 0"
[1] "0 1"
[1] "1 1"
[1] "1 2"
[1] "2 2"
[1] "2 3"
[1] "3 3"
[1] "3 4"

但是,我需要一个包含这些元素的矩阵。

1 个答案:

答案 0 :(得分:4)

在很多方面。这是一个:

i <- 1:10
i[as.logical(i%%2)]

替代方案:

i[(i%%2)==1]

第一个针对不喜欢输入的人的版本:

 i=1:10
 i[!!(i%%2)]

如果你需要做这类事情,你应该写一个函数,如下:

 odd <- function(x) x%%2 != 0

 even <- function(x) x%%2 == 0

......或两者兼而有之。然后你可以做像

这样的事情
i[odd(i)]
[1] 1 3 5 7 9