如何定义一个内部有foor循环,内部有conditional if语句的函数?

如何定义一个内部有foor循环,内部有conditional if语句的函数?,r,R,我试图在R studio中定义一个带有for循环和条件的函数。为此,我从下面代码中的一个简单案例开始。然而,它不起作用 ma<-rep(0,20) l<-function(x){for (i in 1:20){ if (i%%2 ==1) {ma[i]=i+x} else {ma[i]=0}} } ma我们可以将函数更改为 l <- function(x, ma) { for(i in seq_along(ma)) {

我试图在R studio中定义一个带有for循环和条件的函数。为此,我从下面代码中的一个简单案例开始。然而,它不起作用

ma<-rep(0,20)

l<-function(x){for (i in 1:20){
  if (i%%2 ==1) {ma[i]=i+x}
  
  else {ma[i]=0}} 
}  

ma我们可以将函数更改为

l <- function(x, ma) {
         for(i in seq_along(ma)) {
             if(i %% 2 == 1) {
                 ma[i] <- i + x
              } else {
                 ma[i] <- 0
        }
        }
    return(ma)
   }
    

我们可以将函数更改为

l <- function(x, ma) {
         for(i in seq_along(ma)) {
             if(i %% 2 == 1) {
                 ma[i] <- i + x
              } else {
                 ma[i] <- 0
        }
        }
    return(ma)
   }
    

由于
ma
不是传递给函数
l
的参数,您可以尝试
由于
ma
不是传递给函数
l
的参数,您可以尝试

ifelse(seq_along(ma) %% 2 == 1, seq_along(ma) + 5, 0)
#[1]  6  0  8  0 10  0 12  0 14  0 16  0 18  0 20  0 22  0 24  0
l <- function(x) {
  for (i in 1:20) {
    if (i %% 2 == 1) {
      ma[i] <<- i + x
    }
    else {
      ma[i] <<- 0
    }
  }
}
> l(5)
> ma
 [1]  6  0  8  0 10  0 12  0 14  0 16  0 18  0 20  0 22  0 24  0