R 强制应用以返回列表
我有一个矩阵和一个函数,它接受一个向量并返回一个矩阵。我想将函数应用于矩阵的所有行,并将所有结果一起rbind。比如说R 强制应用以返回列表,r,R,我有一个矩阵和一个函数,它接受一个向量并返回一个矩阵。我想将函数应用于矩阵的所有行,并将所有结果一起rbind。比如说 mat <- matrix(1:6, ncol=2) f <- function (x) cbind(1:sum(x), sum(x):1) do.call(rbind, apply(mat, 1, f)) mat在应用函数f之前,必须拆分矩阵mat list_result <- lapply(split(mat,seq(NROW(mat))),f) mat
mat <- matrix(1:6, ncol=2)
f <- function (x) cbind(1:sum(x), sum(x):1)
do.call(rbind, apply(mat, 1, f))
mat在应用函数f之前,必须拆分矩阵mat
list_result <- lapply(split(mat,seq(NROW(mat))),f)
matrix_result <- do.call(rbind,list_result)
list\u result这就是为什么我喜欢plyr
软件包。它有许多--ply
函数,它们都以相同的方式工作。第一个字母对应于作为输入的内容,第二个方法对应于作为输出的内容(l
用于列表,a
用于数组,d
用于数据帧)
因此,alply()
函数的工作原理类似于apply()
,但总是返回一个列表:
alply(mat, 1, f)
当您必须处理空矩阵时,这会遇到问题,因为seq(0)给出了c(1,0)。
alply(mat, 1, f)