首页 > 解决方案 > 在for循环中运行函数

问题描述

这里是 R 的新手,并试图将一个函数放在 for 循环中。当我在其中有另一个函数时,该函数有效并且 for 循环有效,但是当我将它们放在一起时,当我以前不需要时,我收到错误“缺少 TRUE/FALSE 需要的值”。我的功能是:

roll <- function(){

die<- 1:20 # 20 sided die

dice <- sample(die, 2, replace=TRUE) # Roll the die twice

sum(dice) # Add results

}

我试图让它运行 100 多次,同时将输出放入矩阵中。也许我只是不太了解 for 循环的问题,但我有这样的问题:

for(i in 1:nrolls) { #nrolls=100

roll <- sample(die)

if(roll[i] >= 25) {

G_than <- 1

} else{

L_than <- 1

}

}

任何帮助,将不胜感激!

标签: rfunctionfor-loop

解决方案


在这种情况下,您不应该使用 for 循环。

如果您想在这样的向量中获得结果,只需使用 sapply :

roll <- function(x){
    die<- 1:20 # 20 sided die
    dice <- sample(die, 2, replace=TRUE) # Roll the die twice
    sum(dice) # Add results   
}
sapply(c(1:100), roll)

请注意, sapply 会将参数发送给函数,因此您需要更改 roll 以获取该输入(并且什么都不做)


推荐阅读