簡體   English   中英

在 R 中使用 mutate 在 for 循環中分配不同的變量

[英]Assigning different variables in a for loop using mutate in R

我正在嘗試編寫一個 for 循環,該循環使用 mutate function 將一個新列分配給多個不同的數據幀。

如果沒有 for 循環,我將有一個像這樣的簡單代碼:在這種情況下,“i”是各種組號的占位符。

UG_Groupi <- UG_Groupi %>% mutate(pass_ID = ifelse(UG_Groupi$H_ID %in% Groupi$H_ID, TRUE, FALSE))

對於我的循環,我嘗試了這個和其他一些變體,但我無法讓它工作。

for(i in c(1,2,3,5,10,25,40,50)){
  UG_Group <- paste0("UG_Group", i)
  assign(UG_Group, mutate(UG_Group, pass_ID = ifelse(UG_Group$H_ID %in% paste0("Group",i)$H_ID, TRUE, FALSE)))
}

有人知道我如何將“i”傳遞給這個循環中的不同變量,分別讓這個循環工作嗎?

謝謝你。

編輯:這是一個可重現的例子。 在此簡化數據中,“pass_ID”列的所有行(在每個 UG_Group 中)都應包含 boolean TRUE。

UG_Group1 <- data.frame(H_ID = c(1,2,3,4))
UG_Group2 <- data.frame(H_ID = c(5,6,7,8))
UG_Group3 <- data.frame(H_ID = c(9,10,11,12))
UG_Group5 <- data.frame(H_ID = c(18,19,20,21))
UG_Group10 <- data.frame(H_ID = c(27,28,29,30))
UG_Group25 <- data.frame(H_ID = c(46,47,48,49))
UG_Group40 <- data.frame(H_ID = c(87,88,89,90))
UG_Group50 <- data.frame(H_ID = c(35,36,37,38))

Group1 <- data.frame(H_ID = c(1:100), x = c(8888:8987))
Group2 <- data.frame(H_ID = c(1:100), x = c(8888:8987))
Group3 <- data.frame(H_ID = c(1:100), x = c(8888:8987))
Group5 <- data.frame(H_ID = c(1:100), x = c(8888:8987))
Group10 <- data.frame(H_ID = c(1:100), x = c(8888:8987))
Group25 <- data.frame(H_ID = c(1:100), x = c(8888:8987))
Group40 <- data.frame(H_ID = c(1:100), x = c(8888:8987))
Group50 <- data.frame(H_ID = c(1:100), x = c(8888:8987))

根據您的嘗試,您看起來有兩組數據框。 一個帶有"UG_Group" ,另一個帶有"Group" 我們可以使用mget在列表中獲取這兩組數據幀,並使用transform"UG_Group"數據幀中添加新的pass_ID列。

ids <- c(1,2,3,5,10,25,40,50)
list_data <- Map(function(x, y) transform(x, pass_ID = H_ID %in% y$H_ID), 
                   mget(paste0("UG_Group", ids)), mget(paste0("Group",ids)))

現在要將更改放回原始"UG_Group"數據框,我們可以使用list2env

list2env(list_data, .GlobalEnv)

暫無
暫無

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

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