Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 从多个数据帧中删除/操作行_R_Dataframe - Fatal编程技术网

R 从多个数据帧中删除/操作行

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

我试图从多个(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,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