函数/循环错误

时间:2016-06-30 20:10:21

标签: r

这是我的代码,我收到以下错误:

数据错误[,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
}
}

1 个答案:

答案 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) 

编辑:立即更新。再试一次