【问题标题】:Store output of sapply into a data frame?将 sapply 的输出存储到数据框中?
【发布时间】:2017-06-11 15:20:08
【问题描述】:

如何将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() 返回一个向量,但是当我打印向量时,值会连同它的一些“索引”一起打印,例如,列名(如果应用于数据框)。那么,现在当我想将它存储为具有两列的数据框时,其中第一列包含索引部分,第二列包含值,我该怎么做呢?

【问题讨论】:

  • 我不想先使用 write.csv 保存此列,然后再在代码中读取它。我知道解决方案一定很简单,但我被困在这里,什么都想不出来。
  • 你能举一个可重现的例子吗
  • cols
  • 请编辑您的原始问题以添加任何新信息。
  • 为什么问题被标记为负值?

标签: r dataframe sapply


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

    我们可以使用stack

    stack(mylist)[2:1]
    

    数据

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

    【讨论】:

      【解决方案3】:

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

      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
      

      【讨论】:

        猜你喜欢
        • 2023-03-08
        • 1970-01-01
        • 1970-01-01
        • 2021-11-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多