2016-11-16 32 views
0

我在进一步在代码x中运行此公式时遇到问题。总之,我试图通过forloop来模拟这种情况发生1000次,希望能够增加TF的真实时间量和TS是真实的。我收到错误,我错过了一个TRUE/FALSE语句,并尝试重新执行该功能,我仍然很困难。任何帮助或建议将不胜感激。为什么不按照预期在我的for循环工作中引用x?

#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") 

回答

1

的问题是,x仅有1标量值,但你索引它,好像它有1000元。

x 

[1] 3.678794

根据您的描述,它听起来就像你只是想运行代码1000次。这确实是:

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") 
} 
} 
+0

是的,正是我想要做的。感谢一百万Hack-R –

1

随着你写代码的方式“X”不是一个数组而是一个值,所以你不能解引用的方式你现在做。

相关问题