![](/img/trans.png)
[英]Warning: the condition has length > 1 and only the first element will be used
[英]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]
为NA
, monthData
两次初始化monthData
。
您可以将monthData monthData
为NULL
,然后检查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.