R 从多个数据帧中删除/操作行
我试图从多个(28)数据帧中删除相同数量的行,每个数据帧的长度都不同。下面是一个玩具数据集来说明我的意思:R 从多个数据帧中删除/操作行,r,dataframe,R,Dataframe,我试图从多个(28)数据帧中删除相同数量的行,每个数据帧的长度都不同。下面是一个玩具数据集来说明我的意思: df1 <- data.frame( var1 = c(1,2,3,4,5), var2 = c(2,4,6,8,10) ) df2 <- data.frame( var3 = c(1,2,3,4,5,6,7), var4 = c(2,4,6,8,10,12,14) ) df3 <- data.frame( var5 = c(1,2,3,4,5,6
df1 <- data.frame(
var1 = c(1,2,3,4,5),
var2 = c(2,4,6,8,10)
)
df2 <- data.frame(
var3 = c(1,2,3,4,5,6,7),
var4 = c(2,4,6,8,10,12,14)
)
df3 <- data.frame(
var5 = c(1,2,3,4,5,6,7,8,9,10),
var6 = c(2,4,6,8,10,12,14,16,18,20)
)
我们可以使用
mget
获取列表中对象的值
,然后应用删除行
功能
df_list <- lapply(mget(paste0("df", 1:3)), remove_rows)
注意:最好将多个数据集保存在一个列表中,但我们也可以使用list2env
更新全局环境中的原始对象(但不推荐)
在列表中的每个数据帧上使用列表
和lappy
函数:
> df_list <- list(df1, df2, df3)
> new_df_list <- lapply(df_list, remove_rows)
> new_df_list
[[1]]
var1 var2
3 3 6
4 4 8
5 5 10
[[2]]
var3 var4
3 3 6
4 4 8
5 5 10
6 6 12
7 7 14
[[3]]
var5 var6
3 3 6
4 4 8
5 5 10
6 6 12
7 7 14
8 8 16
9 9 18
10 10 20
>测向列表新建测向列表新建测向列表
[[1]]
var1 var2
3 3 6
4 4 8
5 5 10
[[2]]
var3 var4
3 3 6
4 4 8
5 5 10
6 6 12
7 7 14
[[3]]
var5 var6
3 3 6
4 4 8
5 5 10
6 6 12
7 7 14
8 8 16
9 9 18
10 10 20
谢谢,但因为我的数据帧都有不同的名称(例如,不仅仅是df1、df2、df3等)。/它们很多,我无法手动创建类似于列表(df1、df2、df3)
的列表。实际上,使用So解决了这个问题,因为我的实际数据集中的数据帧都有不同的名称,所以我必须使用,但这会很好地工作,谢谢。
df_list <- lapply(mget(paste0("df", 1:3)), remove_rows)
df_list <- lapply(mget(ls(pattern = "df\\d+")), remove_rows)
df_list
#$df1
# var1 var2
#3 3 6
#4 4 8
#5 5 10
#$df2
# var3 var4
#3 3 6
#4 4 8
#5 5 10
#6 6 12
#7 7 14
#$df3
# var5 var6
#3 3 6
#4 4 8
#5 5 10
#6 6 12
#7 7 14
#8 8 16
#9 9 18
#10 10 20
list2env(df_list, .GlobalEnv)
> df_list <- list(df1, df2, df3)
> new_df_list <- lapply(df_list, remove_rows)
> new_df_list
[[1]]
var1 var2
3 3 6
4 4 8
5 5 10
[[2]]
var3 var4
3 3 6
4 4 8
5 5 10
6 6 12
7 7 14
[[3]]
var5 var6
3 3 6
4 4 8
5 5 10
6 6 12
7 7 14
8 8 16
9 9 18
10 10 20