r - 将 ifelse() 应用于向量的每个元素

标签 r

我有一个向量:

a<-rnorm(100,0,1)

我想执行以下操作:

  1. 生成随机数 rnorm(1)
  2. 如果随机数小于指定常数(例如 0.5),则将 a[x] 加 1如果更大则保留a[x] :if (rnorm(1) < 0.5) a[x]+1 else a[x]

  3. 对 a 的每个元素执行此操作。

我正在考虑使用 ifelse()

ifelse( rnorm(1)<0.5, a[x]+1, a[x])但是,这仅返回单个元素作为输出。

我也在考虑将它与 sapply 结合起来:

sapply(1:length(a), function(x) if(rnorm(1)<0.5) a[x]+1 else a[x]) ,但是,我不确定如何在 sapply() 中使用 if 语句.

有人可以帮忙吗?

更新:

如果我不想将 1 加到 a[x] 上,而是想添加 a[x]+runif(1) 呢?

ifelse(rnorm(length(a)<0.5, a[x]+runif(1), a[x])

这将为 a[x] 中满足条件的每个元素添加相同的随机数。是否可以对第二部分进行矢量化?

最佳答案

为什么不只是a + rbinom(100,1,.5)

如果您需要使用ifelse,问题是您没有将调用向量化为rnorm:

ifelse( rnorm(length(a))<0.5, a+1, a)

关于r - 将 ifelse() 应用于向量的每个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19267986/

相关文章:

r - 如何在R中以制表符分隔的分隔文件的标题之前跳过多余的行

r - 使用 R foreach 进行高音 for 循环

r - 如何将多个文件加载到 R 中而不覆盖现有文件?

r - 按数据帧中每个递增顺序分组

r - 您将如何查找下一个最接近的值?

R Markdown 中的Python

r - 在 R 中关注使用 twitter Rest Api 的人

r - 在 R 中为任何 dim-d 创建超立方体

r - 聚合具有相同 ID 的行并仅保留 R 中的唯一条目

r - 如何从MODISTools中的超时错误中恢复