【问题标题】:Apply a function to all columns of data frame which returns a list将函数应用于返回列表的数据框的所有列
【发布时间】:2019-06-03 11:51:40
【问题描述】:

我有一个包含倾斜数据的数据集。

d = data.frame(x = sample(1:15, size = 100, replace = TRUE, prob = 1:15),
               y = sample(1:20, size = 50, replace = TRUE, prob = 20:1))

我想对每一列应用约翰逊变换。我用apply函数试过了。

library(jtrans)

x = apply(d, 2, jtrans)

但是,由于转换后的值在列表中(即 x$x$transformed 或 x$y$transformed),我不知道如何将其应用于数据框?

【问题讨论】:

  • RE.Johnson 似乎无法正常工作,具体取决于创建的 d

标签: r dplyr transformation


【解决方案1】:

您可以定义自定义函数并从结果对象中提取转换后的值。

library(jtrans)
#> Warning: package 'jtrans' was built under R version 3.4.4

set.seed(1)

d = data.frame(x = sample(1:15, size = 100, replace = TRUE, prob = 1:15),
               y = sample(1:20, size = 50, replace = TRUE, prob = 20:1))

new_d <- sapply(d, function(x) jtrans(x)$transformed)

head(new_d)
#>               x           y
#> [1,]  0.8277242  0.55000000
#> [2,]  0.4400000 -0.06683963
#> [3,] -0.1764075 -0.55000000
#> [4,] -1.3760105  1.79402536
#> [5,]  1.3200000  0.55000000
#> [6,] -1.3760105 -0.55000000

reprex package (v0.2.1) 于 2019 年 6 月 3 日创建

【讨论】:

    猜你喜欢
    • 2021-03-20
    • 1970-01-01
    • 2017-04-22
    • 2020-04-24
    • 2019-06-15
    • 1970-01-01
    • 2021-08-28
    • 2017-08-20
    相关资源
    最近更新 更多