我有一个矩阵和一个接受向量并返回矩阵的函数。我想将该函数应用于矩阵的所有行,并将所有结果一起查找。例如
mat <- matrix(1:6, ncol=2)
f <- function (x) cbind(1:sum(x), sum(x):1)
do.call(rbind, apply(mat, 1, f))
由于返回的矩阵具有不同的行数,因此这非常有效,因此apply返回一个列表。但是,如果它们碰巧具有相同的行数,那么它将不再起作用:
mat <- f(3)
apply(mat, 1, f)
apply返回一个矩阵,我无法从中得到想要的结果。是否可以强制申请返回列表,或者还有其他解决方案?
最佳答案
在应用函数f之前,您必须先拆分矩阵垫。
list_result <- lapply(split(mat,seq(NROW(mat))),f)
matrix_result <- do.call(rbind,list_result)