R矩阵中特定列的行和

R矩阵中特定列的行和,r,rowsum,R,Rowsum,我有一个1000 x 3矩阵,由1:10中的整数组合而成(例如,每列都是一个从1到10的索引,我想看看索引的组合)。我想得到满足某些条件的部分行和的组合的行索引 cvec = c(14,15) L <- 3 vec <- seq(10) lst <- lapply(numeric(L), function(x) vec) mat = as.matrix(expand.grid(lst)) partial = NULL for (k in seq(L-1)){ for

我有一个
1000 x 3
矩阵,由
1:10
中的整数组合而成(例如,每列都是一个从1到10的索引,我想看看索引的组合)。我想得到满足某些条件的部分行和的组合的行索引

cvec = c(14,15)
L   <- 3
vec <- seq(10)
lst <- lapply(numeric(L), function(x) vec)
mat = as.matrix(expand.grid(lst))

partial = NULL
for (k in seq(L-1)){
  for (r in seq(L-k+1)){
    partial = c(which(rowSums(mat[,r:(r+k-1)])<=cvec[k]),partial)
  }
}

但是,当我运行
which(rowSums(mat[,r:(r+k-1)])时,首先在循环中
partial
应该是
partial[r,k]
,否则它将被循环的最后一次迭代覆盖。您可能会得到错误,因为
mat[,r:(r+k-1)]
给出1列。谢谢。使用行和的替代方法是什么?在
k=1
的情况下,我有1列。但是,这对我仍然有用。有解决方法吗?尝试
行和(mat[,r:(r+k-1),drop=FALSE]
(ugh…)我想是的。试着从循环中省略k=1,看看这是否真的是问题所在。如果是这样,您可以单独运行k=1。谢谢你们!添加
drop=FALSE
选项就成功了。
 Error in rowSums(mat[, r:(r + k - 1)]) : 
  'x' must be an array of at least two dimensions