Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中返回的带有多个操作的If语句不返回预期的内容?_R - Fatal编程技术网

在R中返回的带有多个操作的If语句不返回预期的内容?

在R中返回的带有多个操作的If语句不返回预期的内容?,r,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]

我构建的函数如下所示:

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
}

我希望我的函数返回的值指示哪些值来自<0.7,哪些值来自<0.3。看来我的函数只计算了第一个条件。需要帮忙吗?我将值存储在矩阵中

x
必须包含维度、行和列。如果要将每个结果存储在列中,则需要在循环中每次递增列

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

x[1,i]您期望的输出是什么?x[1]是右上角的条目;x[1]。。。x[4]只是第一列。如果要填充x的其他列,则需要告诉函数这样做。
x
必须包含维度、行和列。如果要将每个结果存储在列中,则需要在循环中每次递增列,
x[1,i]@Gregor your是正确的,这正是我想要的。请你把它作为答案,这样我就可以接受了。
x[1, i] <- u[i] * 2
x[2, i] <- x[1, i] * 4
# etc.