【发布时间】:2016-10-04 10:28:52
【问题描述】:
我在列表中有 data.frame 对象,我打算有条件地对 data.frame 对象执行 setdiff。我也提出了非常草图功能来完成这项任务,但是我在获取一组互补的 data.frame 时遇到了错误。特别是,我要取对应的data.frame取决于条件。任何人都可以向我提出任何有效解决此问题的想法吗?我怎样才能完成这项任务?
小例子:
myList <- list(
saved = data.frame(from=c(3,33,54,91), to=c(23,42,71,107), label=c("a1","a4","a7","a11"), SC=c(22,6,13,7)),
droped = data.frame(from=c(25,33,47,74,91), to=c(29,42,51,81,107), label=c("a2","a4","a6","a8","a11"), SC=c(3,6,4,5,7))
)
根据输入,我希望实现这个功能(只是草图):
library(dplyr)
func <- function(list, type=c("Bio", "Tech")) {
type=match.arg(type)
res <- ifelse(type=="Bio",
res <- list[[1]],
res <- setdiff(list[[1]], list[[2]]))
return(res)
}
我收到这样的错误:
Error: not compatible: Factor levels not equal for column label
我想要的输出是:
如果类型是“生物”:
from to label SC
1 3 23 a1 22
2 33 42 a4 6
3 54 71 a7 13
4 91 107 a11 7
如果类型是“技术”:
from to label SC
1 3 23 a1 22
3 54 71 a7 13
谁能告诉我如何解决这个问题?如何更有效地获得预期输出?非常感谢。
【问题讨论】: