我有以下数据集
mydata〈-数据集::火山
install.packages('e1071')
library(e1071)
library(tidyverse) #load required libraries
head(mydata) # quick view of the data.
#Part 1
#Calculating kurtosis and new measure with apply from base package with annon
#function and using type 2 from e1071 library
kurtosis <- apply(mydata, 2, function(x) kurtosis(x, type = 2))
new_measure <- apply(mydata, 2, function(x) sd(x) / mad(x))
#create a new dataframe with the calculated kurtosis and new measure
base_mydata <- data.frame(kurtosis = kurtosis, new_measure = new_measure)
我在这方面做得很好,我现在要做的是使用dplyr或purrr来做上面的计算,不知道为什么这不起作用。我只是得到一个向量或NaN值?
#Part 2
# Calculate kurtosis for each column
kurtosis_value <- mydata %>%
map_dbl(~ kurtosis(.x))
需要任何帮助/指导。
我在这方面做得很好,我现在要做的是使用dplyr或purrr来做上面的计算,但不确定为什么这不起作用。我只是得到一个向量或NaN值?我希望返回的值具有每列的峰度值
#Part 2
# Calculate kurtosis for each column
kurtosis_value <- mydata %>%
map_dbl(~ kurtosis(.x))
2条答案
按热度按时间slwdgvem1#
**map_dbl()**函数需要向量或列表作为输入。如果您将矩阵传递给map_dbl(),它将抛出NAs。首先您需要将mydata(矩阵类型)转换为数据框。通过此格式,函数自动将数据框转换为列表并应用函数:
1cklez4t2#
当你把matrix传递给
map()
时,它会遍历每个元素,尽管你可能希望它遍历矩阵的列。创建于2023年2月25日,使用reprex v2.0.2