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

时间:2017-06-11 15:20:09

标签: r dataframe sapply

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

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

我希望输出为:

var         value                             
id            0                                  
member_id     7   

我知道sapply()会返回一个向量,但是当我打印向量时,会打印出值以及一些“索引”,例如列名,如果应用于数据帧。那么,现在当我想将它存储为具有两列的数据框时,其中第一列包含索引部分而第二列包含该值,我该怎么办呢?

3 个答案:

答案 0 :(得分:1)

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

cols&lt; - data.frame(sapply(loan,function(x)sum(is.na(x))))

cols&lt; - cbind(variable = row.names(cols),cols)

我希望row.names位于与sapply获取的值相对应的同一数据帧的列中。

答案 1 :(得分:0)

我们可以使用stack

stack(mylist)[2:1]

数据

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

答案 2 :(得分:0)

这是你想要的吗? 你的原始清单:

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