2017-07-01 45 views
0

我建我的功能是这样的:如果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 

我想我的函数返回的值来自< 0.7和从<一个值,这表明0.3。看来我的功能只能保证第一个条件。请帮忙吗?我将这些值存储在矩阵中。

+2

您的预期输出是什么? x [1]是右上角的条目; x [1] ... x [4]只是第一列。如果你想填充x的其他列,你需要告诉你的函数这样做。 – BLT

+2

'x'必须是尺寸,行和列。如果要将每个结果存储在列中,则需要每次在循环中增加列,即x [1,i] < - u [i] * 2; x [2,i] < - x [1,i] * 4;'等等 – Gregor

+1

@Gregor你正确的是我想要的。你能否把它作为答案,以便我可以接受它。 – Alice

回答

1

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

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