【问题标题】:R - ifelse statement with two conditionsR - 带有两个条件的 ifelse 语句
【发布时间】:2021-05-05 13:38:30
【问题描述】:

我是 R 新手,想了解为什么“ifelse”在我的情况下会失败。

我有一个经度和半径的向量。如果 lons = 0 则应计算 lons + (zrad/dxy)。

一些示例数据:

lons <- c(-80,4)
zrad <- c(747,576)
dxy  <- 222
test <- ifelse(lons < 0 | lons >= 0, lons - (zrad/dxy), lons + (zrad/dxy))
View(test)

这给了我

1   -83.364865
2   1.405405

但是,lons - (zrad/dxy) 是

-83.364865  1.405405 

而 lons + (zrad/dxy) 是

-76.635135  6.594595

但正确的结果应该是

-83.364865 6.594595

我是否需要使用 for 循环以便“测试”包含第一次和第二次计算的结果? 或者有没有更简单的方法来区分这两种情况(条件)?

【问题讨论】:

    标签: r for-loop if-statement conditional-statements


    【解决方案1】:

    我们可以使用case_when

    library(dplyr)
    test <- case_when(lons < 0 ~ lons - (zrad/dxy), TRUE ~ lons + (zrad/dxy))
    

    【讨论】:

      【解决方案2】:

      条件不正确,lons &lt; 0 | lons &gt;= 0 基本上是所有数字,因此它只执行lons - (zrad/dxy)。试试看:

      test <- ifelse(lons < 0, lons - (zrad/dxy), lons + (zrad/dxy))
      test
      #[1] -83.364865   6.594595
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-12
        • 2017-10-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多