如果在R中返回多个动作的语句不返回预期的内容?

时间:2017-07-01 13:56:18

标签: r

我建立了这样的功能:

my_fun <- function(x){
     u <- runif(4,0,1)
     x <- matrix(0,4,4)
     for (i in 1:4){
          if (u[i]< 0.7){
               x[1] <- u[1]*2
               x[2] <- x[1]*4
               x[3] <- x[2]*x[1]
               x[4] <- x[3]
          }else{
               x[1] <- u[1]*1
               x[2] <- x[1]*3
               x[3] <- x[2]*x[1]
               x[4] <- x[3]
          }
     }
     x
}

然后我的函数返回:

> my_fun(3)
          [,1] [,2] [,3] [,4]
[1,] 0.4207944    0    0    0
[2,] 1.2623833    0    0    0
[3,] 0.5312038    0    0    0
[4,] 0.5312038    0    0    0

我希望我的函数返回值,这些值指示哪些值来自&lt; 0.7和哪一个来自&lt; 0.3。似乎我的功能只能克服第一个条件。有什么帮助吗?我将值存储在矩阵中。

1 个答案:

答案 0 :(得分:0)

x必须包含尺寸,行和列。如果要将每个结果存储在列中,则需要在每次循环时增加列,

x[1, i] <- u[i] * 2
x[2, i] <- x[1, i] * 4
# etc.