r - 如何跨向量循环条件执行(多个 ifelse 场景)并为每个场景返回多个向量
问题描述
我有一个模拟数据集,我想在其中评估断点(经度)如何影响结果(东与西的指定)。
例如,以下代码行将根据经度列中的值是大于还是小于 -97 将 1 列修改为填充有“东”或“西”的数据框(标记区域)。
wnv$region <- ifelse(wnv$Longitude>-97, "East", "West")
最后,我想看看不同的阈值(不是 -97)如何影响数据集中的另一个变量。因此,我想遍历一个值向量——比如说breakpoints <- seq(-171, -70, 5)
——并为断点序列中的每个值获取一个新向量(数据集中的列)。
您如何在循环中执行此操作,而不是为每个断点编写新的 ifelse 语句?
谢谢
解决方案
我已经为每个断点包含了不同的区域,以防万一。如果没有,只需删除and并将regions
其替换为您想要的值。 regions[[k]][1]
regions[[k]][2]
breakpoints <- c(-171, 70, 5)
col_names <- paste("gt_breakpoint", seq_along(breakpoints), sep = "_")
wnv <- data.frame(longitude = c(50, -99, 143, 90, 2, -8))
regions <- list(c("region1A", "region1B"), c("region2A", "region2B"),
c("region3A", "region3B"))
for (k in (seq_along(breakpoints))) {
wnv[[col_names[k]]] <- ifelse(wnv$longitude > breakpoints[k], regions[[k]][1],
regions[[k]][2])
}
wnv
#> longitude gt_breakpoint_1 gt_breakpoint_2 gt_breakpoint_3
#> 1 50 region1A region2B region3A
#> 2 -99 region1A region2B region3B
#> 3 143 region1A region2A region3A
#> 4 90 region1A region2A region3A
#> 5 2 region1A region2B region3B
#> 6 -8 region1A region2B region3B
推荐阅读
- node.js - 使用 node.js 的 fluent-ffmpeg 库无法从 VP8 转码到 H264
- python-3.x - 如何在段落之间放置文本python / selenium上的标签?
- python - 尝试使用 python 解析每个表数据时出现 SQLITE 错误
- flutter - 从url获取文件路径
- javascript - 多次循环API调用得到随机结果
- vue.js - vuetify 如何将内容设置为选项卡 v-tabs-items
- r - 为什么这个 for 循环代码和 apply() 一样快?
- javascript - 如何让 Google 文件选择器脚本在公开共享的 Google 表格上启动?
- vue.js - VueJS PDF 网页视图
- ios - Core Image颜色内核的Metal Shading语言,如何传递一个float3数组