R 基于正则表达式的列表中的子集数据帧
类似于,但regex似乎需要一种不同的方法。如果合适,请标记为副本 我继承了一系列数据帧,其结构如下:R 基于正则表达式的列表中的子集数据帧,r,list,lapply,R,List,Lapply,类似于,但regex似乎需要一种不同的方法。如果合适,请标记为副本 我继承了一系列数据帧,其结构如下: variable_1 <- c(1, 2) variable_2 <- c("A", "B") A <- data.frame(variable_1, variable_2) B <- data.frame(variable_1, variable_2) 但是,我的实际数据有很多这样的数据帧,所以我想将它们放入一个列表并对其进行
variable_1 <- c(1, 2)
variable_2 <- c("A", "B")
A <- data.frame(variable_1, variable_2)
B <- data.frame(variable_1, variable_2)
但是,我的实际数据有很多这样的数据帧,所以我想将它们放入一个列表并对其进行批处理:
my_list <- list(A = A, B = B)
$A
variable_1 variable_2
1 1 A
2 2 B
$B
variable_1 variable_2
1 1 A
2 2 B
但是我对R中的正则表达式和列表结构都不熟悉,这使我无法了解如何使用各自的df
名称(即字母)为my_list
中的每个df
执行此操作。这是所需的输出结构,与上面的结果相反(问题似乎出在??):
lappy(我的列表,函数(x){
xU可以利用Map()
并指定列表的names()
作为函数的参数
代码
library(data.table)
Map(function(x, y){
x[x$variable_2 %like% y, ]
},
my_list,
names(my_list))
# $A
# variable_1 variable_2
# 1 1 A
#
# $B
# variable_1 variable_2
# 2 2 B
数据
variable_1 <- c(1, 2)
variable_2 <- c("A", "B")
A <- data.frame(variable_1, variable_2)
B <- data.frame(variable_1, variable_2)
my_list <- list("A" = A, "B" = B)
variable_1U可以利用Map()
并指定列表的names()
作为函数的参数
代码
library(data.table)
Map(function(x, y){
x[x$variable_2 %like% y, ]
},
my_list,
names(my_list))
# $A
# variable_1 variable_2
# 1 1 A
#
# $B
# variable_1 variable_2
# 2 2 B
数据
variable_1 <- c(1, 2)
variable_2 <- c("A", "B")
A <- data.frame(variable_1, variable_2)
B <- data.frame(variable_1, variable_2)
my_list <- list("A" = A, "B" = B)
变量_1我们可以使用imap
library(dplyr)
library(purrr)
imap(my_list, ~ .x %>%
filter(variable_2 == .y))
-输出
#$A
# variable_1 variable_2
#1 1 A
#$B
# variable_1 variable_2
#1 2 B
我们可以使用imap
library(dplyr)
library(purrr)
imap(my_list, ~ .x %>%
filter(variable_2 == .y))
-输出
#$A
# variable_1 variable_2
#1 1 A
#$B
# variable_1 variable_2
#1 2 B
即使有第三个data.frame,您也会始终有两列吗?另外,您的搜索条件有点不清楚。是否要始终搜索变量_2
中的值?即,a
,B
,C
,…?即使有第三个data.frame,您也会始终有两列吗?还有一点不清楚您的搜索条件。是否始终在变量_2
中搜索值?即A
,B
,C
。。。?