我正在尝试使用for if else循环来遍历我的数据。对于其中一个循环,我想更改两列,一列带一个公式,一列带一个书面解释,说明为什么数字是数字。我的代码片段如下。
library(MASS)
library(plyr)
library(dplyr)
library(tidyverse)
if(((SGR >= 5 ) & (SGR30 <= 0 | is.na(SGR30)) & (SGR20 <= 0 | is.na(SGR20)) & (SGR10 <= 0 | is.na(SGR10))))
{
(DataWSGR[k,24] <- ((2/10*FactoredAADT*1) + FactoredAADT)) & (DataWSGR[k,25] <- "1%")
}
[运行代码时,我收到一条错误消息,提示
Error in (DataWSGR[k, 24] <- ((2/10 * FactoredAADT * 1) + FactoredAADT)) & :
operations are possible only for numeric, logical or complex types.
要更改两个列,我在做什么错?
欢迎使用stackoverflow !!!下次,请提供一个可复制的示例。之所以会出现该错误,是因为&
运算符是仅在逻辑测试和比较中而不是在分配中使用的逻辑运算符。
对于您想要的,您必须将作业放在两行中,如下所示:
library(MASS)
library(plyr)
library(dplyr)
library(tidyverse)
if(((SGR >= 5 ) & (SGR30 <= 0 | is.na(SGR30)) & (SGR20 <= 0 | is.na(SGR20)) & (SGR10 <= 0 | is.na(SGR10))))
{
(DataWSGR[k,24] <- (2/10*FactoredAADT*1) + FactoredAADT)
DataWSGR[k,25] <- "1%"
}