r - R中for循环和ifelse的组合
问题描述
如果超出特定(和变量)值,我正在尝试在 R 中的“是”和“否”之间做出决定。对于每个测试值,应创建一个具有不同决策的新列。
这是一个手动创建的示例:
Test.data <- data.frame(c(10, 20, 30, 40, 50, 60, 70, 80, 90, 100))
colnames(Test.data) <- c("Test")
Test.data$Test1 <- ifelse(Test.data$Test > 10, "Yes", "No")
Test.data$Test2 <- ifelse(Test.data$Test > 20, "Yes", "No")
Test.data$Test3 <- ifelse(Test.data$Test > 30, "Yes", "No")
Test.data
这个简单的例子给出了以下输出:
Test Test1 Test2 Test3
1 10 No No No
2 20 Yes No No
3 30 Yes Yes No
4 40 Yes Yes Yes
5 50 Yes Yes Yes
6 60 Yes Yes Yes
7 70 Yes Yes Yes
8 80 Yes Yes Yes
9 90 Yes Yes Yes
10 100 Yes Yes Yes
有没有办法用for循环来做到这一点?我已经尝试过不同的东西,比如下面的代码,但这似乎是无稽之谈,因为它不会创建新的列等等:
n = c(seq(from=10, to=100, by=10))
for(i in n) {
ifelse(Test.data$Test > i, "Yes", "No")
}
谢谢大家!
解决方案
我们可以<-
将输出 from 分配 ()到为列名ifelse
创建的字符串。paste
此外,我们不是循环遍历,而是遍历n
“n”的序列
for(i in seq_along(n)) {
Test.data[paste0("Test", i)] <- ifelse(Test.data$Test > n[i], "Yes", "No")
}
推荐阅读
- wordpress - 网站问题 - 从本地主机移动到虚拟机
- gradle - Gradle >=4.6:在多模块构建中同时使用 java-library 和 java 插件
- html - 将变量从脚本解析为 html 函数
- javascript - `useRef` 和 `createRef` 有什么区别?
- android - 如何将“2019-02-10T19:30:00+00:00”日期格式转换为“19:30”
- android - 为什么我的应用程序按钮会混合并更改其位置?
- django - Django CreateAPIView 不显示创建表单
- winapi - 如何使用 LoadImage 选择图标颜色深度?
- database - 配置 Unifi 控制器以使用外部 MongoDB 数据库 - 可能的角色问题?
- kubernetes - Kubernetes 将自己的域名附加到所有请求