gpt4 book ai didi

关于比较的 R switch 语句

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

我正在尝试编写一个 R 脚本来根据在范围内拟合一个值来评估不同的表达式。这个想法是,如果 Length 在一个范围内,它将以一种方式进行评估,如果它在更长的范围内,它将以不同的方式进行评估。

我可以使用 if/else 语句来完成这项工作,但它非常难看,而且我确信必须有更好的方法......这是有效的代码。

Length=8.2

if (Length<1)
mode="Walk"
else if (1<=Length & Length <5)
mode="bike"
else if (5<=Length & Length <10)
mode="drive"
else if (Length>=10)
mode="fly"

我一直在尝试使用 switch 函数做一些事情,但它似乎只适用于文本或整数......有没有办法让 switch 语句在每种情况下进行评估,例如这样?
Length=3.5

switch(Length,
(Length<1) mode="Walk"
(1<=Length & Length <5) mode="bike"
(5<=Length & Length <10) mode="drive"
(Length=>10) mode="fly"
)

最佳答案

这是与 Josh 类似的答案,但使用的是 findInterval :

Length <- 0:11

cuts <- c(-Inf, 1, 5, 10, Inf)
labs <- c("Walk", "bike", "drive", "fly")

labs[findInterval(Length, cuts)]
# [1] "Walk" "bike" "bike" "bike" "bike" "drive" "drive"
# [8] "drive" "drive" "drive" "fly" "fly"

您也可以使用嵌套 ifelse声明,这是一个品味问题:
ifelse(Length < 1,  "Walk",
ifelse(Length < 5, "bike",
ifelse(Length < 10, "drive",
"fly")))
# [1] "Walk" "bike" "bike" "bike" "bike" "drive" "drive"
# [8] "drive" "drive" "drive" "fly" "fly"

关于关于比较的 R switch 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12379128/

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