【发布时间】:2016-01-15 22:10:26
【问题描述】:
我试图找到一种直接的方法来矢量化/概括 data.frame 的子集。假设我有一个 data.frame:
df <- data.frame(A = 1:5, B = 10 * 1:5, C = 100 * 1:5)
每一列都有自己的条件,目标是 df 的子集,以便只有那些行保留至少一列满足条件的位置。我现在想找到一个泛化的向量化子集机制
df <- subset(df, df[,1]<2 | df[,2]< 30 | df[,3]<100)
所以我可以像这样制定它
crit <- c(2,30,100)
df <- subset(df, df$header < crit[1:3])
沿着我想去的路。
df <- subset(df, df$header < crit[1:n])
我知道一个多步骤循环解决方法,但必须有另一种方法。我很感激任何帮助。
【问题讨论】:
-
旁注:
df <- data.frame(A = 1:5, B = 10 * 1:5, C = 100 * 1:5)比使用 5 行创建数据框更容易;-) -
df[rowSums(mapply(`<`, df, crit)) > 0, ]也许? -
非常感谢,我已经远远落后于子集兔子洞,我忘记了 mapply!
标签: r vectorization subset logical-operators generalization