簡體   English   中英

循環列表中的數據幀

[英]Looping over data frames in a list

我想創建一個新的邏輯變量(傳輸),指示向量(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 #`

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM