是否添加条件以扩展R中的网格? [英] Add conditions to expand grid in R?
本文介绍了是否添加条件以扩展R中的网格?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
是否可以将条件/限制合并到R中的expand.grid
中?
c(1,1,1)
和c(2,2,2)
组合出现?有没有一种可扩展的解决方案,可以在许多限制下工作?我的网格很大,内存无法处理,例如Error: cannot allocate vector of size 32.0 Gb
,因此不能在创建网格后设置子集。
expand.grid(A = rep(1:2),
B = rep(1:3),
C = rep(1:4))
以下代码不起作用:
expand.grid(A[!((A==1 & B==1 & C==1) & (A==2 & B==2 & C==2))] = rep(1:2),
B[!((A==1 & B==1 & C==1) & (A==2 & B==2 & C==2))] = rep(1:3),
C[!((A==1 & B==1 & C==1) & (A==2 & B==2 & C==2))] = rep(1:4))
as.data.frame(expand.grid(A = rep(1:2),
B = rep(1:3),
C = rep(1:4)))[!((A==1 & B==1 & C==1) & (A==2 & B==2 & C==2))]
谢谢!
推荐答案
只需分配expand.grid
数据框,然后运行所需的逻辑,您可以通过比较所有列的相等来缩短这些逻辑(A==C
相等的传递属性不需要):
d1 <- expand.grid(A = rep(1:2),
B = rep(1:3),
C = rep(1:4))
d1 <- with(d1, d1[!(A==B & B==C),])
这篇关于是否添加条件以扩展R中的网格?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文