在R中嵌套if语句-即使'if'语句为TRUE也会执行'else'语句

克罗兹

我有2列的数据框:df$adf$b我需要df$c基于df$b使用2个独立条件集的值来计算列的值应采用哪种条件取决于的值df$a

我试图通过编写嵌套if else语句来解决此问题

# A subset of my data
    a <- c(4211L, 2660L, 2839L, 3967L, 3167L, 2755L, 1680L, 2400L, 1173L, 1301L, 2370L, 2366L, 411L, 615L, 1382L, 826L, 717L, 401L, 177L, 82L, 579L, 246L)
    b <- c(0.213, 0.102, 0.092, 0.121, 0.093, 0.0918, 0.0241, 0.060, 0.008, 0.003, 0.0385, 0.0368, -0.0529, -0.0697, 0.0192, -0.0346, -0.053, NA, -0.098, -0.139, -0.137, -0.0697)
    df <- data.frame(a,b)

我想在何时使用第一组条件,在何时df$a <1000使用第二组条件df$a>=1000这是我的代码:

df$c <- if (df$a < 1000) {
          ifelse(df$b <= -0.2, '1',
                 ifelse(df$b > -0.2 & df$b <= -0.1, '2',
                        ifelse(df$b > -0.1 & df$b <= 0.0, '3',
                               ifelse(df$b > 0.0 & df$b <= 0.1, '4',
                                      '5'))))
        } else {
          ifelse(df$b <= 0.0, '1',
                 ifelse(df$b > 0.0 & df$b <= 0.1, '2',
                        ifelse(df$b > 0.1 & df$b <= 0.2, '3',
                               ifelse(df$b > 0.2 & df$b <= 0.3, '4',
                                      '5'))))
        }

但是,代码将df$c根据else语句中的条件计算所有,即使(df$a < 1000)is为TRUE有谁知道是什么导致了这个错误?我收到以下警告消息:

Warning message:
In if (df$a < 1000) { :
  the condition has length > 1 and only the first element will be used
r.user.05apr

您也可以使用ifelse,因为if它是非向量化的。我将使用一个函数cut来简化代码:

a <- c(4211L, 2660L, 2839L, 3967L, 3167L, 2755L, 1680L, 2400L, 1173L, 1301L, 2370L, 2366L, 411L, 615L, 1382L, 826L, 717L, 401L, 177L, 82L, 579L, 246L)
b <- c(0.213, 0.102, 0.092, 0.121, 0.093, 0.0918, 0.0241, 0.060, 0.008, 0.003, 0.0385, 0.0368, -0.0529, -0.0697, 0.0192, -0.0346, -0.053, NA, -0.098, -0.139, -0.137, -0.0697)
df <- data.frame(a,b)

df$c <- ifelse(df$a < 1000,
               cut(df$b, breaks = c(-Inf, -0.2, -0.1, 0.0, 0.1, +Inf), 
                   labels = as.character(1:5)),
               cut(df$b, c(-Inf, 0, 0.1, 0.2, 0.3, +Inf), 
                   as.character(1:5)))
df

# a       b  c
# 1  4211  0.2130  4
# 2  2660  0.1020  3
# 3  2839  0.0920  2
# 4  3967  0.1210  3
# 5  3167  0.0930  2
# 6  2755  0.0918  2
# 7  1680  0.0241  2
# ....

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

即使 if 语句为真,Else 语句也会运行 (Swift)

来自分类Dev

即使先前的“ if”语句为true,Python程序也会运行“ else”语句

来自分类Dev

在shell中嵌套if else语句

来自分类Dev

在shell中嵌套if else语句

来自分类Dev

即使“ if”语句在PHP中为true,其他语句也会运行

来自分类Dev

即使if语句为true,函数也会返回false

来自分类Dev

if / else语句不执行'if'语句

来自分类Dev

简单的嵌套“ If else”语句

来自分类Dev

简单的嵌套“ If else”语句

来自分类Dev

Python if 语句即使为 false 也会运行

来自分类Dev

R:组合/嵌套的if_else语句

来自分类Dev

嵌套在Python中的if else语句

来自分类Dev

嵌套在Python中的if else语句

来自分类Dev

嵌套If Else语句与ElseIf语句的性能差异

来自分类Dev

即使在jQuery中不满足条件,也要执行else语句

来自分类Dev

R if else语句问题

来自分类Dev

编程在 If 为 True 时诉诸 Else 语句

来自分类Dev

Jquery中的if / else语句

来自分类Dev

JQuery中的if / Else语句

来自分类Dev

IF ... mySQL中的ELSE语句

来自分类Dev

Jquery中的if / else语句

来自分类Dev

JSP中的IF ELSE语句

来自分类Dev

sql中的if / else / else if /语句

来自分类Dev

PHP脚本即使没有执行POST也会执行IF语句

来自分类Dev

嵌套的If-else语句被跳过

来自分类Dev

嵌套Javascript if-else语句

来自分类Dev

为什么即使条件为假(从我看来)也会执行“if”语句?

来自分类Dev

选择语句和If / else语句

来自分类Dev

多个if语句或else-if语句