2016-06-30 55 views
-4

這是我的代碼和我發現了以下錯誤:功能/循環錯誤

錯誤數據[1] = RNORM(N,M,SD): 數項替換的不是多的替換長度

不知道我在做什麼錯。
我需要雙循環它現在,基本上我需要改變k爲2和3和n爲10和15。我知道我需要創建一個函數,創建第二個矩陣,爲代碼中的1:k添加爲...我試圖添加所有,但不知道如何去做。

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 
} 
} 
+2

你應該多解釋一下,試着做什麼,然後對錯誤進行一點搜索。我相信,它已被解決。 '下標越界'通常是當你試圖從邊界訪問數組或向量時。 – user5249203

+0

我正在嘗試爲元分析生成數據。 1-生成正態分佈後的數據2-生成偏態分佈後的數據3-生成邏輯分佈後的數據。我需要循環這一點,因爲每個元的研究#將是10或15. k或元的研究總數將是5.我需要循環兩次以重複此過程10次。數據庫應該是3列(分佈)由65行×10代表 –

回答

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) 

編輯:現在更新。再試一次

+0

嗨布萊恩,感謝您的建議!我正在使用rsGorm函數的包fGarch。我做了你的編輯,但仍然出現以下錯誤:「錯誤:在」}「中出現'}' –

+0

現在再試一次,我編輯它如果你複製並粘貼我的第一個代碼塊,它應該工作 –

+0

美麗!感謝百萬!如果你不介意幫助我多一點,我需要現在雙循環,基本上我需要改變k爲2和3,n爲10和15.我知道我需要創建一個函數,創建第二個矩陣,在代碼中添加for ... for 1:k ...我試圖添加所有這些,希望我能告訴你我到目前爲止,但不知道該怎麼做它通過這裏,我會嘗試添加評論,看看是否有用 –