函数将任意数量的矩阵作为参数并返回列表中的所有矩阵(R)

时间:2014-06-14 12:41:33

标签: r list matrix user-defined-functions apply

我必须定义一个函数,该函数将任意数量的矩阵作为参数并返回列表中的所有矩阵,其中在所有返回的矩阵中删除了缺失值。

我已经为一个变量编写了代码

applyDropNaMatrix <- function(X){
apply_mat_list <- apply(Y, MARGIN=1, function(Z) Z[!is.na(Z[])])
return(apply_mat_list) 
}

我需要为更多数量的变量(即参数&#34; ...&#34;)实现此函数。解决方案(我不允许使用&#34; complete.cases(x)&#34;

applyDropNaMatrix <- function(...) sapply( list( ... ) , function(X) X[rowSums(is.na(X))==0 , ], simplify=F)

非常感谢你!你和#34; SAVED&#34;我的结束时间:D

1 个答案:

答案 0 :(得分:2)

这应该做你需要的(适用于任何类型,不仅仅是矩阵)

put.in.list <- function(...)
  {
  list(...)
  }

要删除我建议的NA

my.list <- put.in.list(m1, m2, m3, m4)
my.list.no.NA <- sapply(my.list, function(x){m[complete.cases(m),]}, simplify=F)

请注意simplify=F强制输出到列表,否则如果列表的所有成员都兼容,则输出可以简化为矩阵。