这是一段代码,可以在R脚本中正常运行:
```{r }
n <- c(10,20,10,20,50)
m <- c(10,10,20,20,50)
n <- 50
m <- 50
s1 <- c(1,1)
s2 <- c(1,25) #standartnovisrzes sadalījumiem
N<- 10000 #atkārtojumu skaits
emp <- c()
for (k in 1:2){
for (j in 1:5){
resamples1 <- lapply(1:N, function(i) rnorm(n[j], 0, s1[k]))
resamples2 <- lapply(1:N, function(i) rnorm(m[j], 0, s2[k]))
t.rez_var_equal <- mapply(resamples1, resamples2,
FUN=function(x,y) t.test(x,y, var.equal=T))
t_rez <- mapply(resamples1, resamples2,
FUN=function(x,y) t.test(x,y))
t_wilcox <- mapply(resamples1, resamples2,
FUN=function(x,y) wilcox.test(x,y))
t.pval.var.equal <- unlist(t.rez_var_equal[3,])
t.pval <- unlist(t_rez[3,])
t.pval.wilcox <- unlist(t_wilcox[3,])
emp_05_tvequal <- length(t.pval.var.equal[t.pval.var.equal<=0.05])/N
emp_05_t <- length(t.pval[t.pval<=0.05])/N
emp_05_twilcox <- length(t.pval.wilcox[t.pval.wilcox<=0.05])/N
emp <- append(emp, c(emp_05_tvequal, emp_05_t, emp_05_twilcox))
emp
}}
```
但是,当尝试编织文档时,它将引发关于第9行的错误:
resamples1 <- lapply(1:N, function(i) rnorm(n[j], 0, s1[k]))
错误消息:Error in rnorm(n[j], 0, s1[k])): invalid argument Calls: <Anonymous>... withVisible -> eval -> eval -> lapply -> FUN -> rnorm Execution halted.
也许R在Rmarkdown文件中不允许循环?
您意外覆盖变量n
,并m
在声明之后。这样它们的长度都为1。当您尝试访问其中的任何其他位置时,n[i]
它将返回NA
,从而在rnorm
函数内部引发此错误。
这与Rmarkdown无关,而是与以下事实有关:编织文件时,它会运行脚本中的所有行,并且在“手动”运行时,您只能选择要运行的行,这可能是您做的,这就是它在脚本中起作用的原因。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句