我有一个矩阵 data.mat,它看起来像:
A B C D E
45 43 45 65 23
12 45 56 NA NA
13 4 34 12 NA
我试图把它变成一个列表列表,其中每一行都是一个更大列表中的一个列表。我执行以下操作:
list <- tapply(data.mat,rep(1:nrow(data.mat),ncol(data.mat)),function(i)i)
这给了我一个列表列表,包括 NAs,例如:
$`1`
[1] 45 43 45 65 23
$`2`
[1] 12 45 56 NA NA
$`3`
[1] 13 4 34 12 NA
但我想要的是:
$`1`
[1] 45 43 45 65 23
$`2`
[1] 12 45 56
$`3`
[1] 13 4 34 12
在 tapply 调用期间或事后,是否有删除 NA 的好方法?
最佳答案
当然,您可以使用 lapply
像这样:
> lapply(list, function(x) x[!is.na(x)])
$`1`
[1] 45 43 45 65 23
$`2`
[1] 12 45 56
$`3`
[1] 13 4 34 12
关于从列表列表中删除 NA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25777104/