我在代码x中进一步运行此公式时遇到问题。简而言之,我试图运行这个虽然forloop模拟这种情况发生了1000次。希望加起来TF的时间是真实的,TS是真的。我收到错误,我错过了一个TRUE / FALSE语句,并尝试重新处理函数,但仍然很困难。任何帮助或建议将不胜感激。
#Parameters
c=0.10 #colonization rate
A=10 #Area of all islands(km^2)
d=100 #Distance from host to target (A-T)
s=0.5 #magnitude of distance
d0=100 #Specific "half distance" for dispersal(km)
C1 = c*A*exp(-d/d0) #Mainland to Target colonization
TS=1 #Target Success
TF=0 #Target Failure
Z =runif(1,0,1)
x <- C1*A
for(i in 1:1000)
if(x[i] <= Z)
print("TS")
if(x[i] >= Z)
print("TF")
答案 0 :(得分:1)
问题是x
只是1个标量值,但你要将它编入索引,好像它有1,000个元素。
x
[1] 3.678794
根据您的描述,听起来您只想运行代码1,000次。这样做:
for(i in 1:1000) {
c=0.10 #colonization rate
A=10 #Area of all islands(km^2)
d=100 #Distance from host to target (A-T)
s=0.5 #magnitude of distance
d0=100 #Specific "half distance" for dispersal(km)
C1 = c*A*exp(-d/d0) #Mainland to Target colonization
TS=1 #Target Success
TF=0 #Target Failure
Z =runif(1,0,1)
x <- C1*A
if(x <= Z) {
print("TS")
}
if(x >= Z){
print("TF")
}
}
答案 1 :(得分:1)
使用你编写代码的方式'x'不是一个数组而是一个值,所以你不能以你现在的方式取消引用它。