首页 > 解决方案 > R用ifelse遍历向量

问题描述

我希望 ifelse 循环遍历向量,如果条件为真(值 = 2 或 3),我想对一组进行采样,如果不将值设置为零。此代码有效,但似乎只进行一次采样,并且回收了相同的值。是否可以让它对数组的每个值执行采样?

vec1 <- sample(1:7, 5, replace = TRUE)

vec2 <- ifelse (vec1 == 2 | vec1 == 3,
                sample(0:3, 1),
                0
                )
vec2
[1] 3 3 0 0 3

它有效,但我希望 vec2 位置 1,2 和 5 有不同的值,而不是每次都发生相同的值。所以我希望看到随机抽样,最终得到

vec2 [1] 1 3 0 0 3

或者

vec2 [1] 1 2 0 0 3

我的逻辑和/或代码中缺少某些东西。谢谢,J

标签: rloopsif-statementsample

解决方案


尝试这个。

vec2 <- sapply(vec1, function(x) ifelse(x == 2 | x == 3, sample(0:3, 1), 0))

推荐阅读