【发布时间】:2021-02-03 18:51:13
【问题描述】:
我正在尝试将多个函数应用于数据集中的每一列,并为每个计算的函数取回一列,然后这些行将对应于计算它的列。所以在下面的代码中,有 3 个 ID。然后我计算每个函数的三个函数,因此最终的数据框将有 3 行和 3 列。现在,行对应于计算函数的 Id,列对应于计算的内容。我对其他解决方案持开放态度,但更喜欢 tidyverse 解决方案,因为我需要它可以推广到很多功能并且仍然很快。
预期的输出在 end.data 中
data <- data.frame(id1 = 1:10,id2 = 1:10,id3 = 1:10)
data
end.data <- data.frame(innprod = c(385,385,385),identity = c(55,55,55) , range = c(9,9,9))
end.data
我尝试合并并汇总计算,但它在各自的列中返回每个。
data <- data.frame(id1 = 1:10,id2 = 1:10,id3 = 1:10)
map.fun <- list(
innprod = ~ t(.x)%*%.x,
identity = ~ sum(.x),
range = ~ max(.x) - min(.x)
)
feat_m <- data %>% summarise(across(where(is.numeric),map.fun))
feat_m
【问题讨论】:
-
预期输出在 end.data 中。将编辑问题以明确说明
标签: r dplyr tidyverse tidyr data-manipulation