r - 如何重新排序列表中的多个 df

标签 r

我有一个 df 列表。我想使用 Order 中的信息对 lst 中的每个 df 进行排序。我尝试使用 mapmap2 来执行此操作。但是我的代码不起作用。有什么建议吗?

我想知道如何使用 maplapply 实现此目标(如果可行的话)。谢谢。

## Sample list
lst1<- list(Test = structure(list(SubjectID = c("101-05-202", "101-06-203", 
"102-10-401", "101-11-402", "105-12-403", "101-13-501", "101-14-502", 
"101-15-503", "101-01-101", "101-05-202", "101-06-203", "101-11-402", 
"101-13-501", "101-14-502", "101-15-503", "101-01-101", "101-05-202", 
"101-06-203", "101-11-402", "101-13-501", "101-14-502", "101-15-503", 
"101-01-101", "101-05-202", "101-06-203", "101-11-402", "101-13-501", 
"101-14-502", "101-15-503", "101-05-202", "101-06-203", "101-11-402", 
"101-13-501", "101-14-502", "101-15-503", "101-06-203", "101-11-402", 
"101-13-501", "101-14-502", "101-15-503", "101-11-402", "101-13-501", 
"101-14-502", "101-15-503", "101-06-203", "101-11-402", "101-14-502", 
"101-06-203", "101-14-502", "101-06-203", "101-06-203", "101-06-203", 
"101-06-203", "101-06-203", "101-06-203"), Test = c("ELA", 
"ELA", "ART", "ELA", "ELA", "ELA", "ELA", "ELA", "ELA, PE", "ELA", 
"ELA", "ELA", "ELA, MATH", "ELA", "ELA", "ELA,PE", "ELA", "ELA", 
"ELA", "ELA", "ELA", "ELA", "PE", "ELA", "ELA", "ELA", "ELA", 
"ELA", "ELA", "ELA", "ELA", "ELA", "ELA,MATH", "ELA", "ELA", 
"ELA", "ELA", "ELA", "ELA", "ELA", "ELA", "ELA", "ELA", "ELA", 
"ELA", "ELA", "ELA", "ELA", "ELA", "ELA", "ELA", "ELA", "ELA", 
"ELA,PE", "ELA")), class = "data.frame", row.names = c(NA, -55L
)), Comments = structure(list(SubjectID = c("101-01-101", "101-02-102", 
"106-03-103", "101-05-202", "103-04-201", "103-09-303", "105-12-403"
), COMYN = c("No", "No", "No", "No", "No", "No", "Yes")), class = "data.frame", row.names = c(NA, 
-7L)), Enroll = structure(list(SubjectID = c("101-01-101", "101-02-102", 
"106-03-103", "101-05-202", "103-04-201", "101-06-203", "102-07-301", 
"105-08-302", "103-09-303", "102-10-401", "101-11-402", "105-12-403"
), EDT = c("09/03/2020", "09/11/2020", "10/08/2020", "12/08/2020", 
"12/09/2020", "12/23/2020", "02/02/2021", "02/17/2021", "03/10/2021", 
"04/19/2021", "04/28/2021", "06/03/2021")), row.names = c(NA, 
-12L), class = c("spec_tbl_df", "tbl_df", "tbl", "data.frame"
), spec = structure(list(cols = list(SubjectID = structure(list(), class = c("collector_character", 
"collector")), Group = structure(list(), class = c("collector_character", 
"collector")), Site = structure(list(), class = c("collector_character", 
"collector")), SubjectStatus = structure(list(), class = c("collector_character", 
"collector")), Visit = structure(list(), class = c("collector_character", 
"collector")), Form = structure(list(), class = c("collector_character", 
"collector")), FormEntryDate = structure(list(), class = c("collector_logical", 
"collector")), ICDT = structure(list(), class = c("collector_character", 
"collector")), ICDT_CODED = structure(list(), class = c("collector_logical", 
"collector")), ICPVDATE = structure(list(), class = c("collector_character", 
"collector")), ICPVDATE_CODED = structure(list(), class = c("collector_double", 
"collector")), Informed_C_CREATE_DTM = structure(list(), class = c("collector_character", 
"collector")), Informed_C_LAST_UPD_DTM = structure(list(), class = c("collector_character", 
"collector")), SubjectVisitFormID = structure(list(), class = c("collector_double", 
"collector"))), default = structure(list(), class = c("collector_guess", 
"collector")), skip = 1), class = "col_spec")))

## Order file
Order<-structure(list(File = c("Test", "Comments", "Enroll"), Order = c("SubjectID", 
"SubjectID", "SubjectID, mdy(EDT)")), row.names = c(NA, -3L), class = c("tbl_df", 
"tbl", "data.frame"))

## Order lst with Order
lst[Order$File] <- map2(lst[Order$File], Order$Order, ~ .x %>% 
                          arrange(paste(.y)))

最佳答案

我们可能需要解析表达式

library(dplyr)
library(purrr)
library(stringr)
library(lubridate)
lst1[Order$File] <- map2(lst1[Order$File], Order$Order,
      ~ .x %>%
        arrange(!!! rlang::parse_exprs(str_replace(.y, ",", ";"))))

关于r - 如何重新排序列表中的多个 df,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70084226/

相关文章:

r - 将 knitr 包的 kable 函数生成的表格居中

r - 如何绘制交互项标准差变化的边际效应?

r - R中逻辑向量中连续值的相交范围

r - ggplot没有绘制正确的颜色

从 ggplot 对象返回调用

r - 如何将值向量作为 mutate 的参数传递?

r - 从 R 中的数字字符串创建各个数字的列总计

sql - R 和 SQL : Importing date and time from SQL to R

r - 显示跨一条显示行的循环计数器

r - 更改 ggplot 中标题的颜色