r - 循环列表中的数据帧
问题描述
我想创建一个新的逻辑变量(传输),指示向量(mrn)的每个元素是否存在于 6 个数据帧中。我在一个名为传输的列表中有 6 个数据帧。下面的代码可以满足我的要求,但效率低下。
mer_tpa1520 <- mer_tpa1520 %>%
mutate(transfer = ifelse(mrn %in% transfers[[1]]$`MRN #` |
mrn %in% transfers[[2]]$`MRN #` |
mrn %in% transfers[[3]]$`MRN #` |
mrn %in% transfers[[4]]$`MRN #` |
mrn %in% transfers[[5]]$`MRN #` |
mrn %in% transfers[[6]]$`MRN #`,
TRUE, FALSE))
我试图用下面的代码来实现这一点,但没有成功。if 语句没有向量化,我不知道如何使它与 ifelse 一起工作。
for (i in 1:length(transfers)){
if(mer_tpa1520$mrn %in% transfers[[i]]$`MRN #`){
mer_tpa1520$transfer <- TRUE
}
}
谢谢你。
解决方案
也许,如果您的数据不需要这种特定结构(data.frames 列表):
# bind all data frames in the list.
# The name of each item in the original list is saved in the new columns "data.frame.name"
df <- bind_rows(transfers, .id = "data.frame.name")
现在这应该更容易了,尽管我不确定它在你需要的意义上是否有效。
# Creating a new "transport" variable in mer_tpa1520
mer_tpa1520$transfer <- mer_tpa1520$mrn %in% df$`MRN #`
推荐阅读
- react-native - React Native 中的 Paytm 集成
- c# - 在 ASP.Net Core 2.2 的 Kestrel Web 服务器中禁用 Nagle 算法
- sql - 在 SQL Server 2012 中计算移动平均线
- python - 为什么我添加到 zshrc 的路径只有在我切换到 bash 然后再切换回来时才有效?
- facebook - 可以使用图形 api 生成某些页面的公共事件的数据库,而无需在我的应用程序中集成 facebook 登录
- mysql - 如何优化子查询
- kubernetes - K8s 使用 EnvFrom 创建部署
- python - 如何在数组中返回嵌套文档
- jquery - 为什么通过函数调用jQuery序列化不起作用?
- android - 着色器如何在 Android OpenGL 中工作?