遍历一列并返回值

时间:2020-03-05 13:30:09

标签: r loops dataframe if-statement na

我想遍历数据框中的一列并检查条件,然后替换0或1。代码是:

for (i in v$R){
     if( is.na(v$R) ==TRUE ){v$V5 = 0}else{v$V5=1}
}

但是我得到一个错误。名为“ v”的数据帧如下。 V5具有NA值,如果R列中的值为NA,我想用0代替,否则用1代替。我该怎么做?

A B R V5
1 2 3 NA
4 5 NA NA

2 个答案:

答案 0 :(得分:1)

  • 您可以像下面一样尝试ifelse
df <- within(df,V5 <- ifelse(is.na(R),0,1))

+(将逻辑值转换为数字值)

df <- within(df,V5 <- +!is.na(R))

这样

> df
  A B  R V5
1 1 2  3  1
2 4 5 NA  0
  • 如果您想使用循环,可以尝试
for (i in seq_along(df$R)){
  if( is.na(df$R[i]) ==TRUE ){df$V5[i] = 0}else{df$V5[i]=1}
}

数据

df <- structure(list(A = c(1L, 4L), B = c(2L, 5L), R = c(3L, NA), V5 = c(NA, 
NA)), class = "data.frame", row.names = c(NA, -2L))

答案 1 :(得分:1)

尝试一下:

onerror