我使用了以下代码
a=runif(15,0,1)
b=numeric(15)
for(i in 1:length(a))
{
if(a[i]<(2/3))
b[i]=0
else
b[i]=1
}
b
输出
[1] 1 0 0 0 0 0 1 0 0 0 0 1 0 0 1
我尝试修改 if 条件,如下所示
a=runif(15,0,1)
b=numeric(15)
for(i in 1:length(a))
{
if((1/3)<a[i]<(2/3))
b[i]=0
else
b[i]=1
}
b
输出
a=runif(15,0,1)
> b=numeric(15)
> for(i in 1:length(a))
+ {
+ if((1/3)<a[i]<(2/3))
Error: unexpected '<' in:
" {
if((1/3)<a[i]<"
> b[i]=0
> else
Error: unexpected 'else' in " else"
> b[i]=1
> }
Error: unexpected '}' in " }"
> b
[1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
您能否告诉另一种方法,我如何将矢量下特定范围内的值替换为所需的数字,例如 o。
您可以使用
lapply
a=runif(15,0,1)
b=numeric(15)
as.numeric(unlist(lapply(a, function(x) 1/3 < x & x < 2/3 )))
[1] 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0
或者你也可以简单地做
as.numeric(1/3 < a & a < 2/3)
[1] 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0