【发布时间】:2015-09-06 21:02:25
【问题描述】:
我是 R 新手,具有 Stata 和 SAS 背景。我通常使用循环来创建变量并加快进程。
我正在执行以下操作:1) 我需要为值 10、20、100 和 1000 运行循环“I”4 次,并将 4 个值存储在向量或表中。 Loop I 运行一个进程 100 次。因此,我们总共有 400 次重复。
首先。我的循环需要制作 100 个大小为 10 的样本,看看有多少样本满足条件并存储数字。 然后制作 100 个大小为 20 的样本,看看其中有多少样本符合条件……等等。
This is the variable for the sample size
v=c(10,20,100,1000)
This variable will store the number of observations that meet the condition
sum.x=c(0,0,0,0)
This is the variable for the 100 repetitions.
sample = matrix(0,ncol=1,nrow=100)
This is the loop.
for (x in seq(along=v)){
for (i in 1:100) {
data=rnorm(`v`,0.25,1)
test=t.test(data)
sample[i,1]=test$p.value
}
sum.x[v]=sum(sample>0.05)
}
代码运行良好,只是它没有做我需要做的事情:
1) sum.x 有 1000 个观察值而不是 4 个。我知道 !"[v]" 表示行的位置或其他内容。我只想创建一个如下命名的向量/变量并创建一个小表:
table=data.fram(sum.x10, sum.x20, sum.x100, sum.x1000).
2) 数据只有 4 个观察值而不是 100 个。主要问题是我不知道如何将四个样本大小与 100 联系起来。
谢谢。
【问题讨论】:
-
你的第一个循环有索引
x,但在循环内你使用v -
"sum.x[v]" 等同于 "c(sum.x[10],sum.x[20],sum.x[100],sum.x[1000] )”。因此,在脚本“sum.x”的最后一条语句之后,长度为 1000。
-
我知道循环有错误,我明白原因。问题是我只是不知道如何将我想做的这两件事联系起来。感谢您抽出宝贵时间。