r - 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
解决方案
尝试这个。
vec2 <- sapply(vec1, function(x) ifelse(x == 2 | x == 3, sample(0:3, 1), 0))
推荐阅读
- angular - 使用模态实用程序类避免循环依赖?
- r - flexdashboard 的离子名称
- regex - 在powershell中用正则表达式替换子字符串
- r - 如何将解析函数中的文本与其他(未解析的)文本结合起来进行绘图注释?
- angular - 试图找出一种干净的方法来使用 observables 对每个数组项执行操作
- 3d - 为 PostGIS DB 中的 2D 渲染优化 3D 数据
- laravel - 在 laravel api 中返回带有 json 的响应会删除集合分页链接
- sql - 如何在 Google Spanner 中查看数据库或表的索引?
- r - R 中的 Swimmerplot,堆叠条之间有“空白”空间(ggplot)
- formula - 如何查看和重新编辑 LibreOffice 或 OpenOffice Writer 文本文档表格中的公式?