gpt4 book ai didi

r - 为什么带有字符语句的 ifelse 不起作用?

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

我今天在理解函数如何工作方面遇到了问题。

这是我的代码:

my_fun<- function(x){
ifelse(as.character(x) == 'Species',
a<- iris %>% select(x),
a<- iris*2)

a
}

my_fun(x = Species)

为什么不工作?

最佳答案

需要进行三项更改,

  1. 转换为字符将使用deparse/substitute

  2. if/else 比较合适,因为 ifelse 要求所有参数的长度相同

  3. iris * 2 作为 else 选项不起作用,因为数据集还包含 factor 列。因此,我们只需要乘以那些数字列

    my_fun <- function(x) {               
    x <- deparse(substitute(x))
    if(x == 'Species') {
    iris %>%
    select(all_of(x))
    } else {
    iris %>%
    mutate(across(where(is.numeric), ~ .* 2))
    }
    }

-测试

my_fun(Species)
# Species
#1 setosa
#2 setosa
#3 setosa
#4 setosa
#5 setosa
#6 setosa
#...

如果我们传递另一个输入

my_fun(hello)
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#1 10.2 7.0 2.8 0.4 setosa
#2 9.8 6.0 2.8 0.4 setosa
#3 9.4 6.4 2.6 0.4 setosa
#4 9.2 6.2 3.0 0.4 setosa
#5 10.0 7.2 2.8 0.4 setosa
#6 10.8 7.8 3.4 0.8 setosa
# ...

关于r - 为什么带有字符语句的 ifelse 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67392172/

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