【问题标题】:why is ifelse function producing NA为什么 ifelse 函数会产生 NA
【发布时间】:2019-11-07 09:36:20
【问题描述】:

ifelse 生产不适用

m <- tracking_new_table$CowId=="807439"
ifelse (m==T , tracking_new_table$V1=="8","")

当条件满足时,我应该在 VI 列中得到“8”。相反,我得到了 NA。在不满足条件的其他行中,我得到“”,这就是我想要的。 数据

【问题讨论】:

标签: r if-statement na


【解决方案1】:

就像评论中指出的那样,如果没有可重复的示例,很难确切知道您想要什么。

您似乎正试图在 ifelse 语句中进行赋值。我不确定这是否是问题所在。如果CowID 是整数类,也可能是您在尝试匹配的CowID 数字周围使用引号导致问题,但是通过使用引号将其转换为类字符。

但是,您可以这样做(注意我将CowID 视为整数/数字,将V1 视为字符):

tracking_new_table <- data.frame(
  CowID = c(32394, 807439, 967094, 926699),
  V1 = c("", "", "", "")
)

m <- tracking_new_table$CowID == 807439

# This will replace the value in V1
tracking_new_table$V1 <- ifelse(m == T, "8", "")

【讨论】:

    【解决方案2】:

    可能你需要的是

    tracking_new_table$V1 <- ifelse (m, 8,"")
    

    这也可以用

    tracking_new_table$V1 <- c("", 8)[m + 1]
    

    【讨论】:

      【解决方案3】:
      • ifelse 返回两个值之一,具体取决于测试条件。 它不是执行代码 sn-p one 或 根据条件编码 sn -p 2。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-26
        相关资源
        最近更新 更多