R:关于数据帧的ifelse语句

时间:2018-01-09 13:30:23

标签: r if-statement dataframe

d1 <- data.frame(y1 = c("A","B","C"), y2 = c(1, 2, 3), y3 = c(4, 5, 6))

我想制作所有值&lt; 3到零。

我这样做了:

d2 <- ifelse(d1[,2:3] > 3,  d1[,2:3], 0)

但是,它会返回一个列表。我需要确切的数据帧,但值为&lt; 3为零。

1 个答案:

答案 0 :(得分:0)

这应该可以解决问题:

d1[, 2:3] <- lapply(d1[, 2:3], function(x) ifelse(x < 3, 0, x))

> d1
  y1 y2 y3
1  A  0  4
2  B  0  5
3  C  3  6