首页 > 解决方案 > 从 R 中的多个数据框中删除相同的列

问题描述

我正在尝试使用以下代码从 R 中的多个数据帧“df1”和“df2”中删除同一列“col3”,但我不知道如何将 lapply 函数的结果重新分配给数据帧。我错过了什么?任何帮助将不胜感激。

df1 <- data.frame(col1 = c(1:4), col2 = c("A","B","C","D"), col3 = c("H","I","J","K"))
df2 <- data.frame(col1 = c(11:14), col2 = c("L","M","N","O"), col3 = c("W","X","Y","Z"))
list_dfs <- list(df1,df2)

lapply(list_dfs, function(x) x[!(names(x) %in% c("col3"))])

标签: rlapply

解决方案


如果要将子集结果分配回原始数据帧,请使用以下命令创建命名列表:

list_dfs <- list(df1 = df1,df2 = df2)
#OR
#list_dfs <- dplyr::lst(df1, df2)

执行子集操作

list_dfs <- lapply(list_dfs, function(x) x[names(x) != "col3"])

使用将结果分配回原始数据框 list2env

list2env(list_dfs, .GlobalEnv)

推荐阅读