gpt4 book ai didi

r - 解决 a[b] 可能返回不同长度向量的问题的有效方法是什么?

转载 作者:行者123 更新时间:2023-12-04 11:02:04 25 4
gpt4 key购买 nike

> a <- factor(1:3)
> b <- c(0,1,2)
> ifelse(b == 0, 5, a[b])
[1] 5 2 1

我希望看到 5,1,2

原因是a[b]实际返回的是1, 2,与a的长度不同,所以的结果code>ifelse 由于回收而损坏。

我可以用if...else 来写ifelse,但是效率很低。常见的处理方式是什么?

最佳答案

此解决方案产生正确答案:

a <- factor(1:3)
b <- c(0,1,2)
a = as.numeric(a)
zero_logical = b != 0 # Precompute because if a contains a zero, this will also be replaced by 5
b[zero_logical] <- a[b[zero_logical]]
b[!zero_logical] <- 5
b
[1] 5 1 2

此解决方案使用两个赋值,一个用于 b != 0,一个用于 b == 0,因此与显式循环相比,这应该非常快。

关于r - 解决 a[b] 可能返回不同长度向量的问题的有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19766942/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com