将R循环函数的返回写入向量

时间:2017-08-08 06:02:46

标签: r

我继续低于输出:

[1]  0  0  0 22

而不是

[1]  19  21 21 22

下面的每行最大数量"数据"文件:

  A  B  C
1 1 19 10
2 2 20 11
3 3 21 12
4 4 22 13

使用的功能:

f <- function(x) {
     for (i in 1:4) z<- x[i,1:3] 
         count <- max(z)
         y<- vector(length = 4)  
         y[i] <- count
     return(print(y)) 
 }

运行该功能:

 f5 <- f(data)

问题是如何让系统在向量中写入每个循环输出而不擦除任何循环输出!

提前谢谢你,

1 个答案:

答案 0 :(得分:4)

我们不需要循环,只需使用pmax

do.call(pmax, df1)
#[1] 19 20 21 22

如果我们需要使用for循环,最好创建一个长度等于数据集('v')行数的vector并分配'v'的每个元素'使用循环遍历每行的max

f <- function(dat) {
 v <- numeric(nrow(dat))
 for (i in seq_len(nrow(dat))) { 
    v[i] <- max(unlist(dat[i,]))
  }
  v
}

f(df1)
#[1] 19 20 21 22