我使用了以下代码
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。
发布于 2017-11-08 18:17:34
您可以使用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 0https://stackoverflow.com/questions/47176580
复制相似问题