Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 强制应用以返回列表_R - Fatal编程技术网

R 强制应用以返回列表

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

我有一个矩阵和一个函数,它接受一个向量并返回一个矩阵。我想将函数应用于矩阵的所有行,并将所有结果一起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)
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)