【问题标题】:Apply Function to Specific Column in R List将函数应用于 R 列表中的特定列
【发布时间】:2020-01-20 17:04:29
【问题描述】:

我看到了许多与我的问题非常相似的问题,但我所看到的答案都没有真正解决我正在尝试做的事情。我有一个数据框列表,我正在尝试将digest() 函数应用于列表中每个数据框的同一列。我在 SO 上看到的一些答案是:

dflist <- list(data.frame(number = 1:10, name = 1:10),
               data.frame(number = 2:15, name = 1:14))

dflist <- lapply(dflist, function(x){
  x$name <- digest(x$name, algo = "sha256")
  return(x)
  })

#OR this

dflist <- lapply(dflist, function(x) {
  x %>% mutate_each(funs(digest(.,algo = "sha256")), "name")
})

这两者都提供相同的输出 - 即 name 列中的每一行都具有相同的精确值。 digest() 函数有效,但只返回每一行中第一行的值。

我也试过了:

dflist <- lapply(dflist, function(x) {
  digest(x[,"name"], algo = "sha256")
  })

但这只是返回列表中每个数据帧的第一个值。

任何建议将不胜感激!

【问题讨论】:

    标签: r list apply lapply


    【解决方案1】:

    digest 未矢量化

    dflist1 <- lapply(dflist, function(x) {
          x$name <- Vectorize(digest::digest)(x$name, algo = "sha256")
         x
       })
    

    或者在transform使用它

    dflist1 <- lapply(dflist, transform, name = Vectorize(digest::digest)(name))
    

    【讨论】:

    • 正是我想要的。谢谢你教会了我一些新东西!
    猜你喜欢
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 2020-05-24
    • 2014-03-17
    • 1970-01-01
    • 2023-03-17
    • 2015-05-08
    • 1970-01-01
    相关资源
    最近更新 更多