[英]save results of loop in a vector R
我運行一個循環:
N = 10
alpha = 0.05
sigma = 0.01
for (i in 0:N){
Vt10[i] = ((sigma^2)/(alpha^2))*((N-i)+(2/alpha))*exp(-alpha*(N-i))-(1/(2*alpha))*exp(-2*alpha*(N-i))-(3/(2*alpha))
}
但是, Vt10
最終僅輸出10個結果(當i = 0
時不包括第一次迭代)。 如何創建一個包含所有11個迭代的向量?
回答:
N = 10
alpha = 0.05
sigma = 0.01
Vt10 = numeric(11) ## this!
for (i in 0:N){
Vt10[i+1] = ((sigma^2)/(alpha^2))*((N-i)+(2/alpha))*exp(-alpha*(N-i))-(1/(2*alpha))*exp(-2*alpha*(N-i))-(3/(2*alpha))
}
另外,您需要Vt10[i+1]
,因為您從0循環到10,而數組索引應該是1到11。
評論:
您的代碼看起來像C代碼。 您不僅從0開始索引,而且為此任務編寫了一個循環。
嘗試:
N = 10
alpha = 0.05
sigma = 0.01
i = 0:10
Vt10 = ((sigma^2)/(alpha^2))*((N-i)+(2/alpha))*exp(-alpha*(N-i))-(1/(2*alpha))*exp(-2*alpha*(N-i))-(3/(2*alpha))
在這種情況下,無需預先定義向量。 R知道您正在執行逐元素計算,並將自動為Vt10
分配一個長度為11的向量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.