这是我的代码,我收到以下错误:
数据错误[,1] = rnorm(n,m,sd): 要替换的项目数量不是替换长度的倍数
不知道我做错了什么 我现在需要双循环,基本上我需要将k变为2和3,n变为10和15 。我知道我需要创建一个函数,创建第二个矩阵,在代码中为1:k添加for ...我想尝试添加所有但不确定如何操作。
library(fGarch)
#n reps =10
rep=10
#begin function here, need to vary n and k, when k=2 n=10, when k3 n=15
fun=function(n, k, m, sd, sk){
#prepare to store data
data=matrix(0,nrow=k, ncol=3)
db=matrix(0,nrow=rep, ncol=3)
final=NULL
for (j in 1:rep)
{
for (i in 1:k)
{
#generate data under normal, skewed, and logistic distributions here
data[,1]=rnorm(n, m, sd)
data[,2]=rsnorm(n, m, sd, sk)
data[,3]=rlogis(n, m, sd)
}
final[j]=db
}
}
答案 0 :(得分:1)
您有一些拼写错误和括号问题。以下代码有效:
library(fGarch)
rep=10
data=matrix(0,nrow=10*rep, ncol=3)
for (i in 1:rep){
data[(10*(i-1)+1):(10*i),1]<-rnorm(10, 100, 15)
data[(10*(i-1)+1):(10*i),2]<-rsnorm(10, 100, 15,1)
data[(10*(i-1)+1):(10*i),3]<-rlogis(10, 100, 15)
}
注意data[(10*(i-1)+1):(10*i),1]
中的另一组括号值得注意的是,这里的for
循环完全没必要,而且非常类似于R,即可能导致R中的坏习惯。可以使用相同的结果:
data[,1]<-rnorm(10*rep, 100, 15)
data[,2]<-rsnorm(10*rep, 100, 15, 1)
data[,3]<-rlogis(10*rep, 100, 15)
编辑:立即更新。再试一次