在R中具有某些条件的情况下为循环中的变量分配值

时间:2019-11-26 12:52:20

标签: r loops dataframe if-statement

我想创建一个

循环
  1. 为给定的数据帧(df)创建一系列变量a1-a17
  2. 基于变量b的值将变量C的值分配给a1-a17。

我不想这样做17次,请给我一些建议以使它们进入循环:

df$a1 <- ifelse(df$b ==1, df$c, NA )
df$a2 <- ifelse(df$b ==2, df$c, NA )
.
.
.
df$a16 <- ifelse(df$b ==16, df$c, NA )
df$a17 <- ifelse(df$b ==17 , df$c, NA )

感谢初学者的任何答案!

1 个答案:

答案 0 :(得分:1)

由于您没有提供任何可重现的示例,因此无法在实际数据上进行测试,但是for循环可能看起来像这样:

for (i in 1:17) {
  df[[paste0(a, i)]] <- ifelse(df$b == i, df$c, NA)
}

或使用lapply(),它应该更快:

df[paste0(a, 1:17)] <- lapply(1:17, function(i) ifelse(df$b == i, df$c, NA))