【发布时间】:2014-06-14 12:41:32
【问题描述】:
我必须定义一个函数,它接受任意数量的矩阵作为参数并返回列表中的所有矩阵,其中所有返回的矩阵中的缺失值已被删除。
我已经为一个变量写了代码
applyDropNaMatrix <- function(X){
apply_mat_list <- apply(Y, MARGIN=1, function(Z) Z[!is.na(Z[])])
return(apply_mat_list)
}
我需要为更多的变量(即参数“...”)实现这个函数。解决方案(我不被允许使用“complete.cases(x)”
applyDropNaMatrix <- function(...) sapply( list( ... ) , function(X) X[rowSums(is.na(X))==0 , ], simplify=F)
非常感谢!你“拯救”了我的周末:D
【问题讨论】:
-
您删除 NA 的函数很可能会将您的矩阵转换为列表,这是您想要的吗?
-
嗯,实际上最终结果必须是我作为输入提供的矩阵列表。您的观察非常聪明,因为如果我删除 NA,这些矩阵不再是矩阵......也许我应该删除包含 NA 元素的整行......
-
-1
I was not allowed to use "complete.cases(x)。这是 Stack Overflow 最荒谬的(ab)使用;它不仅是家庭作业,而且是为了你自己学习一些东西而人为限制的。让其他人花时间在上面有什么意义? -
显然我无法为@baptiste 回答问题,但我认为如果对问题有最低限度的了解并且OP 自己进行了一些研究,那么家庭作业问题中没有固有的问题。也许下次你清楚地指定它是家庭作业会更好,以避免人们认为你只是希望有人为你做作业(这里不是这种情况)。无论如何,没有伤害,很高兴你解决了你的问题。 PS:关于作业有a post on Meta。
-
好吧,我可能反应过度了,但我希望你能明白原因:真正的编程问题与仅为人工作业和教育目的而设计的问题之间存在很大差异。如果是家庭作业,请务必明确说明,以便人们做出明智的回应选择。
标签: r list matrix user-defined-functions apply