我有一个值向量(仅限数字)。我想把这个向量分成两个向量。一个向量将包含小于原始向量平均值的值,另一个向量将包含大于原始向量平均值的值。我有以下作为测试 R 脚本:
v <- c(1,1,4,6,3,67,10,194,847)
#Initialize
v.in<- c(rep(0),length(v))
v.out<- c(rep(0),length(v))
for (i in 1:length(v))
{
if (v < 0.68 * mean(v))
{
v.in[i] <- v[i]
}
else
{
v.out[i] <- v[i]
}
}
v.in
v.out
## <https://gist.github.com/8a6747ea9b7421161c43>
我得到以下结果:
9: In if (v < 0.68 * mean(v)) { :
the condition has length > 1 and only the first element will be used
> v.in
[1] 1 1 4 6 3 67 10 194 847
> v.out
[1] 0 9
> v
[1] 1 1 4 6 3 67 10 194 847
>
显然,0 和 9 不是 v 中任何元素的值。
任何建议发生了什么以及如何解决这个问题?
谢谢,埃德