r - R、sapply()、函数和 if/else 问题
问题描述
我必须对整个专栏进行操作。我需要一列中每一行的值“x”为:
- 如果 x < 42,则为 0,
- 如果 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 乘以同一行中的值,但在函数内的另一列中!
解决方案
ifelse()
可以一次处理一整列,您可以将它们堆叠起来,例如:
set.seed(1)
a <- runif(n = 100, min = 0, max = 400)
b <- rep(2, 100)
df <- data.frame(a,b)
df$c <- ifelse(df$a < 42, 0, ifelse(df$a > 364, 5, df$b * 5))
head(df)
#> a b c
#> 1 106.20347 2 10
#> 2 148.84956 2 10
#> 3 229.14135 2 10
#> 4 363.28312 2 10
#> 5 80.67277 2 10
#> 6 359.35587 2 10
Created on 2021-09-23 by the reprex package (v2.0.1)
推荐阅读
- r - 获取行明智的第一个和第二个最大名称
- c# - 如何将类型“UnityEngine.Color32[]”转换为“UnityEngine.Sprite”
- ios - 以编程方式设置约束
- r - 广义非线性混合效应模型
- android - 我可以在不使用 ARFragment 的情况下在 ARCore 中旋转 3D 对象吗?
- reactjs - 如何在Reducer ReactJS中对数组进行排序
- javascript - 获取反应总是返回(位置 0 处 JSON 中的意外标记 R)
- php - 如何打印动态数组的特殊值?
- excel - Date_time 格式无法识别 AM/PM
- oracle - AWS RDS ORACLE 调度程序作业提前一小时运行