Mat*_*ert 3 r list lapply dataframe
我得到了几个data.frames的列表,我想从每个data.frames中删除前两列.我这样做了,但觉得这可能更像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)
Run Code Online (Sandbox Code Playgroud)
显然这可以完成这项工作,但对我来说,似乎我必须在这里遗漏一些东西(例如在lapply中使用运算符,因为它在技术上也是一个函数).但是,这种方法的主要缺点是,对于要对该列表的所有元素执行的每个小任务,都需要一个小辅助函数.
你的代码非常好R.但你有两个选择:
[特定于此情况的运算符你原来的:
xx <- lapply(myList,removeCols,1:2)
Run Code Online (Sandbox Code Playgroud)
匿名函数:
yy <- lapply(myList, function(df, vec){df[,-vec]}, 1:2)
Run Code Online (Sandbox Code Playgroud)
使用[运营商:
zz <- lapply(myList, "[", -(1:2))
Run Code Online (Sandbox Code Playgroud)
这些产生相同的结果
identical(xx, yy)
[1] TRUE
identical(xx, zz)
[1] TRUE
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4843 次 |
| 最近记录: |