繁体   English   中英

如果条件的长度> 1并且仅使用第一个元素,为什么我会在R中收到此警告

[英]Why do I get this warning in R if, the condition has length > 1 and only the first element will be used

我有下面的源代码。 if (is.na(monthData))用于检查monthData是否为NA 如果是,请为其分配一个初始值。

monthData <- NA
if (category == 'QUARTER') {
  for (m in c(rep(1:4))) {
    md <- NA
    md <- queryDataForQuarter(year, str_c(m), kpi)
    if (is.na(monthData)) {
      monthData <- md[0,]
    }
    monthData[nrow(monthData) + 1,] <- md[1,]
  }
}

运行代码时,我得到了警告。 我的代码有什么问题?

In if (is.na(monthData)) { ... : the condition has length > 1 and only the first element will be used

第一次迭代后, monthData是一个数据is.na(monthData) ,调用is.na(monthData)将创建一个逻辑数据is.na(monthData) if语句仅使用该数据帧的第一个元素,因此,如果md[0,0]NAmonthData两次初始化monthData

您可以将monthData monthDataNULL ,然后检查length(monthData) == 0

monthData <- NULL
if (category == 'QUARTER') {
  for (m in c(rep(1:4))) {
    md <- NA
    md <- queryDataForQuarter(year, str_c(m), kpi)
    if (length(monthData) == 0) {
      monthData <- md[0,]
    }
    monthData[nrow(monthData) + 1,] <- md[1,]
  }
}

If函数不能在大小大于1的向量上运行。我假设is.na(monthData)包含多个元素。 通过调试模式签出-使用browser()。

R会发出警告(而不是错误),因为它是小错误的适应性(宽容),并且有一种解决方法,即选择向量的第一个元素并继续前进。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM