【发布时间】:2016-11-04 10:24:38
【问题描述】:
我在列表中有 data.frame 对象,我打算将它们按最后一列拆分。但是,我尝试使用 split 函数来执行此任务,现在每个 data.frame 都有相应的两个子集。我的下一个尝试是只过滤掉每个子data.frame的名称,而其余的data.frame可以由函数返回,更准确地说,是从嵌套列表中过滤掉保存的data.frame作为返回的输出。谁能帮助我如何以更舒适的方式促进这项任务?我可能会采取哪些行动?有什么方法可以使输出得到很好的表现?提前致谢
快速重现示例:
dfList <- list(hola= data.frame( start=seq(1, by=4, len=15), to=seq(3, by=4, len=15), value=sample(30, 15)),
boo = data.frame( start=seq(3, by=7, len=20), to=seq(6, by=7, len=20), value=sample(30, 20)),
meh = data.frame( start=seq(4, by=8, len=25), to=seq(7, by=8, len=25), value=sample(30, 25)))
我尝试实现如下功能:
splitMe <- function(list, ...) {
# check input
rslt <- lapply(list, function(x) {
out <- split(x, ifelse(x$value >= 10, "save", "discard"))
# intend to filter out discard data.frame and export it as csv file
# How Can I make this happen
# while I intend to only return save data.frame from each as output of splitMe
})
}
关于我的功能的骨架,我怎样才能使它完整?我怎样才能更有效地获得我想要的输出?任何想法都值得赞赏。
【问题讨论】:
-
我觉得不错,或许你可以把
ifelse改成lapply(dfList, function(x) setNames(split(x, x$value >=10), c('discard', 'save')))