【问题标题】:R: ifelse statement on dataframe [duplicate]R:关于数据框的 ifelse 语句 [重复]
【发布时间】:2018-01-09 13:30:23
【问题描述】:
d1 <- data.frame(y1 = c("A","B","C"), y2 = c(1, 2, 3), y3 = c(4, 5, 6))

我想让所有值

我这样做了:

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

但是,它返回给我一个列表。我需要确切的数据框,但值

【问题讨论】:

  • 不要使用ifelse。就做d1[d1[2:3] &lt; 3, 2:3] &lt;- 0
  • ifelse 应该用于原子向量,而不是整个 data.frame。 David 的评论是正确的,但您也可以使用 lapply 循环遍历 data.frame 的列,并对每一列(向量)运行 ifelse
  • 您可能会觉得这很有帮助:stackoverflow.com/questions/47816693/…

标签: r if-statement dataframe


【解决方案1】:

这应该可以解决问题:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-12
    • 2022-07-07
    • 1970-01-01
    • 1970-01-01
    • 2021-09-26
    • 1970-01-01
    • 2015-10-03
    相关资源
    最近更新 更多