【发布时间】:2020-08-09 21:16:26
【问题描述】:
我想有条件地替换 3d 数组中特定向量中的值,替换值是概率计算中的值。由于某种原因,向量的所有值的替换值都是相同的,而不是在单个向量元素的基础上计算。我的语法一定有一些简单的错误
library (abind)
pop <- array(c (1,0,1,1,1,0,0,0,0,0,2,0,2,3,5), dim = c(1,5,3))
pop <- abind(pop,pop, along = 1)
所以我要处理的特定向量是
pop[dim(pop)[1], ,1]
[1] 1 0 1 1 1
我想要实现的是不理会零值,如果值为一,则运行随机二项式测试,看看它是否变为零,如果确实改变,则进行插入。有人告诉我 ifelse 是矢量化的,但是使用这种语法,它不能单独对矢量的每个元素进行操作。当我尝试生成一个新的向量时
ifelse (pop[dim(pop)[1], ,1] == 1, rbinom(1,1,0.5), 0)
我没有得到任何改变
> ifelse (pop[dim(pop)[1], ,1] == 1, rbinom(1,1,0.5), 0)
[1] 1 0 1 1 1
或者它会改变所有的值。
> ifelse (pop[dim(pop)[1], ,1] == 1, rbinom(1,1,0.5), 0)
[1] 0 0 0 0 0
我希望数组中的某些值会被更改,但不是“全有或全无”。我究竟做错了什么?此外,如果有一种简单优雅的方法可以将替换回原始 3d 数组,我将不胜感激。谢谢。 J
【问题讨论】:
标签: r arrays replace conditional-statements