r - 在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
}
}
任何帮助,将不胜感激!
解决方案
在这种情况下,您不应该使用 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 以获取该输入(并且什么都不做)
推荐阅读
- r - 使用 dplyr grep 术语列表、分组和汇总值
- google-apps-script - 将 .csv 文件从 google drive 文件夹导入现有的 google sheet
- c++ - Pimpl 的替代品
- python - 如何将数据帧传输到二维列表
- c - 在 C 编程中 - 如何在此 if 语句中断循环后获取新的 scanf 输入
- python - 如何在不输入提示错误的情况下指定具有子类的实例?
- github-api - 使用 Github REST API 创建部署分支规则
- excel - 从 activex 组合框自动调整其他工作表的行高
- python - 在循环中获取输入有什么区别?
- angular - 用于媒体类型请求的 Angular HTTP 拦截器