r - 如何对 data.frames 列表进行索引(子集)

标签 r list dataframe lapply

我得到了几个 data.frames 的列表,我想从每个 data.frames 中删除前 2 列。我是按如下方式进行的,但觉得这可能更 R-ish。

data(mtcars)
data(iris)
myList <- list(A = mtcars, B = iris)
# helper function
removeCols <- function(df,vec) {
res <- df[,-vec]
}
lapply(myList,removeCols,1:2)

显然这可以完成工作,但对我来说,我似乎在这里错过了一些东西(例如在 lapply 中使用运算符,因为它在技术上也是一个函数)。 但是,这种方法的主要缺点是您需要一个小辅助函数来处理您想要对该列表的所有元素执行的每个小任务。

最佳答案

您的代码是非常好的 R。但是您有两种选择:

  1. 使用匿名函数 - 这是一个通用解决方案
  2. 使用 [ 运算符 - 特定于这种情况

您的原件:

xx <- lapply(myList,removeCols,1:2)

匿名函数:

yy <- lapply(myList, function(df, vec){df[,-vec]}, 1:2)

使用 [ 运算符:

zz <- lapply(myList, "[", -(1:2))

这些产生相同的结果

identical(xx, yy)
[1] TRUE

identical(xx, zz)
[1] TRUE

关于r - 如何对 data.frames 列表进行索引(子集),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11879873/

相关文章:

r - ggplot2 条形图 : hjust depending on bar and label size

r - 使用 count() 和 factor() 函数时,如何在 R ggplot 中使用动态声明的变量?

python - 列表有 str.join() 吗?

python - 如何按用户定义的顺序对列表中的列表进行排序?

python - dataframe iloc 在 pandas 中出乎意料地工作

r - 如何从 R 中的 .csv 文件中读取列向量

.net - 哪个更快 : clear collection or instantiate new

python - 在Python中乘以2个df列后在单词之间添加空格

python - 将 pandas 数据框字符串条目拆分(分解)为单独的行

将 dateRangeInput 恢复为空