gpt4 book ai didi

r - 链接 ifelse 语句的智能方法?

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

当我必须链接 ifelse 语句时,它看起来像:

ifelse(input=="x","x1",
ifelse(input=="y","x2",
ifelse(input=="z","x3",NA)))

有没有更聪明的方法来做到这一点?我正在考虑创建表然后合并或类似的东西只是为了让代码看起来更好?

最佳答案

除了评论中的建议,您还可以使用 match通过以下方式。

创建示例数据:

set.seed(1)
vals_in <- c("x", "y", "z") # unique values in your input vector
vec_in <- sample(vals_in, 10, replace = TRUE) # sample from vals_in to create input
vals_out <- c("x1", "x2", "x3") # values to replace

现在,替换嵌套的 ifelse你可以这样做:
vec_out <- vals_out[match(vec_in, vals_in)]

结果是
vec_out
# [1] "x1" "x2" "x2" "x3" "x1" "x3" "x3" "x2" "x2" "x1"

两种方法的一些比较:
set.seed(1)
vals_in <- letters
vec_in <- sample(vals_in, 1e7, replace = TRUE)
vals_out <- LETTERS

system.time(vals_out[match(vec_in, vals_in)])
User System verstrichen
0.378 0.020 0.398
system.time(unname(setNames(vals_out, vals_in)[vec_in]))
User System verstrichen
1.020 0.062 1.084

关于r - 链接 ifelse 语句的智能方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35336536/

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