r - R:随机采样向量中的一个非零元素,并将其他元素替换为 0
问题描述
假设我有一个向量
vec <- c(0, 1, 0, 0, 0, 1, 1, 1, 1, 2)
如何随机采样一个非零元素并将其他元素变为 0?
假设采样的元素是 vec[2],那么结果向量将是
vec <- c(0, 1, 0, 0, 0, 0, 0, 0, 0, 0)
我知道我可以通过 sample(which(vec != 0), 1) 对一个非零元素的索引进行采样,但我不知道如何着手。谢谢!
解决方案
你可以试试下面的代码
> replace(0 * vec, sample(which(vec != 0), 1), 1)
[1] 0 0 0 0 0 0 0 1 0 0
在哪里
which
返回非零值的索引sample
给出一个随机索引replace
将值替换为1
特定索引处
推荐阅读
- flutter - 如何从没有上下文的类中访问提供者字段?
- python - 在 Docker 中运行应用程序时发现 ModuleNotFound
- zsh - 如何使 zsh compsys 回退到命令的本地文件?
- linux - 在Linux上将vcf生日转换为caldav
- java - 对于 Android 9,内容解析器对数据的查询为空
- php - Fpdf 不工作/连接到本地主机?
- sql - SQL 语句中缺少左括号的解决方法
- java - Java中同步/易失的可变可见性影响程度是多少
- ruby-on-rails - 适用于帖子的相同redirect_to 路由不适用于评论(相同的网址)
- authentication - GCP Cloud Router 不支持 BGP 身份验证吗?