繁体   English   中英

R:如何将map.ply整体上作为data.frame

[英]R: how can mapply take data.frame as a whole

说我有一个data.frame,我想通过不同的过滤器对数据进行子集化并获取它们的列表,因此我尝试了以下操作:

df <- data.frame(A=c(1,2,3), B=c(7,8,9))
filter_lst <- list(c(1,2), c(2,3))
filter_by_range <- function(df, filter) {
  with(df, {df[A >= filter[1] &
               A < filter[2], ]})
}
mapply(filter_by_range, df, filter_lst)

但是显示错误:

Error in eval(substitute(expr), data, enclos = parent.frame()) : 
  numeric 'envir' arg not of length one
Called from: with.default(df, {
    df[A >= filter[1] & A < filter[2], ]
})

我想这是因为df被作为一个列表mapply ,怎么能mapply采取df作为一个整体或任何其他更好的方法来完成这项工作?

如以上评论所述:

 mapply(filter_by_range, filter=filter_lst, MoreArgs=list(df))
  [,1] [,2]
A 1    2   
B 7    8   

请注意,它作为矩阵返回,因为默认值为SIMPLIFY = TRUE。 如果您希望将其作为列表:

> mapply(filter_by_range, filter=filter_lst, MoreArgs=list(df), SIMPLIFY=FALSE)
[[1]]
  A B
1 1 7

[[2]]
  A B
2 2 8

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM