2015-11-06 157 views
0

我仍然得到有R交手并相继成立专门写一个函数,其中如果xy是矢量任务循环&倍数:所有功能与R中

x <- c(3,7,9) 
y <- 20 

...然后的x并且其小于yx倍数需要在一个载体的形式输出,例如:

v1 <- c(3,6,7,9,12,14,15,18) 

但随后在函数内它需要在VEC总结所有的数字tor v1 - (3+6+...+15+18)

我已经去过了,但如果有其他的陈述,我永远无法得到我的头,所以任何人都可以帮我解释,所以我知道将来的参考?

+1

下一次,当您发布添加问题至今你已经尝试过的东西。检查[这个SO问题](https://stackoverflow.com/questions/8904662/simple-if-else-loop-in-r)更多关于“如果else”在R. –

回答

0

无需要循环分支。弄清楚每个x值多少次进入y,然后生成唯一的号码清单:

x <- c(3,7,9) 
y <- 20 

possible <- y %/% x 
#[1] 6 2 2 

out <- unique(sequence(possible) * rep(x,possible)) 
# or alternatively 
# out <- unique(unlist(Map(function(a,b) sequence(a) * b, possible, x))) 
out 
#[1] 3 6 9 12 15 18 7 14 
sum(out) 
#[1] 84 
0

下面是一个使用基本循环的例子,如果在其他R.

x <- c(3,7,9) 
y1 <- 20 
v1 <- numeric() 
for(i in x){ 
    nex <- i 
    counter <- 1 
    repeat{ 
     if(!(nex %in% v1)){ 
      v1 <- c(v1, nex) 
     } 
     counter <- counter + 1 
     nex <- i*counter 
     if(nex >= y1){ 
      break 
     } 
    } 
} 
v1 <- sort(v1) 
v1.sum <- sum(v1) 

v1 
## 3 6 7 9 12 14 15 18 
v1.sum 
## 84