【问题标题】:Regular ifelse function doesn't work properly in R常规 ifelse 函数在 R 中无法正常工作
【发布时间】:2022-06-30 21:30:20
【问题描述】:

我在 R 中运行常规 ifelse() 函数,但注意到它在以下情况下似乎无法正常工作:

vac_admin_level <- "both"
admin_list <- ifelse(vac_admin_level == "both", c("admin1", "admin2"), vac_admin_level)

admin_list <- ifelse(identical(vac_admin_level, "both"), c("admin1", "admin2"), vac_admin_level)

在这两种情况下,admin_list 只返回“admin1”,这很奇怪。但是,当我运行以下代码时,它按预期工作。

if(identical(vac_admin_level, "both")) {admin_list <- c("admin1", "admin2")} else {admin_list <- vac_admin_level}

我希望我对潜在问题的解释是有道理的。这对其他人来说是不是也有点奇怪?谢谢!

【问题讨论】:

  • ifelse(cond, x, y)的返回值由length(cond)决定。阅读?ifelse
  • ifelse returns a value with the same shape as test which is filled with elements selected from either yes or no depending on whether the element of test is TRUE or FALSE.

标签: r


【解决方案1】:

如果您将返回的向量放入 list() 中,它将返回整个列表:

vac_admin_level <- "both"
admin_list <- ifelse(vac_admin_level == "both", list(c("admin1", "admin2")), vac_admin_level)
admin_list
#> [[1]]
#> [1] "admin1" "admin2"

reprex package (v2.0.1) 于 2022-06-30 创建

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-21
    • 1970-01-01
    • 2019-04-07
    • 2016-01-06
    • 2012-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多