【发布时间】:2014-02-14 11:47:22
【问题描述】:
我想根据我的元数据中的两个条件制作我的数据子集。
data= data.frame (w=c(rep ("a", 10),rep("b", 10), rep ("c", 10)), y=(rep(c(1,2,3),10)), v=rnorm (30))
metadata = data.frame (w=c("b","a",),y= c(1,2))
allY <- data.frame ()
mainY <- data.frame ()
for (x in 1:length (data [,1])){
allY <- data.frame (data [which (data$w %in% metadata[x,1]),])
mainY <- data.frame (rbind (mainY, allY [which (allY$y %in% metadata[x,2]),]))
}
mainY
问题在于数据和元数据都非常大,而且需要花费数小时才能完成。当它完成时,我遇到了一个错误:
你知道我怎样才能启动这个过程,也许使用 data.table 代替吗?
非常感谢!
【问题讨论】:
-
您发布的代码没有做任何事情(
mainY最后是空的),因此很难弄清楚您在做什么。选择metadata[x,2]几乎肯定不会满足您的要求:x正在从一个因子转换为一个数字。如果这不是一个因素,那么它将使用行名,而你没有。 -
请描述您想要达到的目标并显示预期的输出。
-
谢谢。我使用了 metadata[,1] 而不是 metadata [x,1] 并排除了 for 循环,我的问题现在解决了。做起来真的很快。
标签: r dataframe data.table binary-search