将 sapply 的输出存储到数据框中?

Store output of sapply into a data frame?

如何将 sapply() 的输出存储到数据帧中,其中索引值存储在第一列中,其值存储在相应的第二列中。为了便于说明,我在这里只显示了 2 个元素,但我的数据中有 110 列。 "loan" 是数据框。

cols <- sapply(loan,function(x) sum(is.na(x)))                                                          
cols                                                                          
id                                                                               
0                                                                              
member_id                                                                             
7

我希望输出为:

var         value                             
id            0                                  
member_id     7   

我知道 sapply() returns 是一个向量,但是当我打印向量时,值会连同它的一些 "index" 一起打印,例如,如果应用于数据框,列名。所以,现在当我想将它存储为具有两列的数据框时,第一列包含索引部分,第二列包含值,我该怎么做?

我们可以使用stack

stack(mylist)[2:1]

数据

mylist <- list(df = 1, rf = 2)

这是你想要的吗? 您的原始列表:

L <- c("df",1,"rf",2)
L

[1] "df" "1"  "rf" "2"

作为数据框:

N <- length(L)
df <- data.frame( var = L[seq(1,N,2)], value = L[seq(2,N,2)] )
df

  var value
1  df     1
2  rf     2

我找到了问题的答案。对于那些真正理解我的问题的人来说,这个答案可能是有道理的:

cols <- data.frame(sapply(loan ,function(x) sum(is.na(x))))                     

cols <- cbind(variable = row.names(cols), cols)

我希望 row.names 位于与从 sapply 获得的值对应的同一数据框的列中。