【发布时间】:2021-11-17 00:36:52
【问题描述】:
我必须对整个列进行操作。 我需要一列中每一行的值“x”为:
- 如果 x
- 如果 x > 364,那么 5,
- 如果不满足这些条件,我需要将 5 乘以另一列中与 x 相同行位置的值。
我的操作结构是这样的:
rel$recentness_new <- sapply(rel$`Recentness data (# days)`, function(x) if (x < 42) {
0
} else if (x > 364) {
5
} else {
rel$recentness_relative[x] * 5
})
你可以想象到第二个 if 之前一切都很好,然后我得到奇怪的值作为输出。 我不知道如何告诉 R 乘以同一行中的值,但在函数内的另一列中!
【问题讨论】:
-
这似乎是 data.table::fcase 或 dplyr::case_when 的一个很好的用例
-
至于使用供应,您需要沿着 seq_along(column) 循环以获得索引 ii;在前两个分支中使用 column[ii],在第三个分支中使用 relative[ii]。
标签: r function if-statement sapply