我想在if else循环的一行中写入两个不同的列

问题描述 投票:0回答:1

我正在尝试使用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.

要更改两个列,我在做什么错?

r
1个回答
0
投票

欢迎使用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%"
    }
© www.soinside.com 2019 - 2024. All rights reserved.