在R [重复]中创建公式

问题描述 投票:0回答:2

我正在尝试创建一个公式,该公式可用于快速检查不同变量的正态性。我是R的新手,不确定如何继续。这是我的尝试,但不起作用:

normality_test <- function(my_data) { shapiro.test(my_data$"x") }

我的目标是能够使用如下公式:

normality_test("variable name")
r function variables
2个回答
1
投票

使用[[访问列数据。

normality_test<- function(my_data, col) shapiro.test(my_data[[col]])

您可以将其用作:

normality_test(my_data, "var1")
normality_test(my_data, "var2")

要对所有列应用normality_test,可以使用:

result <- lapply(names(my_data), normality_test, my_data = my_data)

但是,如果要对所有列运行此操作,则可以直接使用

result <- lapply(my_data, shapiro.test)

无需创建normality_test函数。


1
投票

这里是您的可行解决方案。与您的主要区别在于,使用[]表示法而不是$表示法来进行变量提取,并且我的为函数提供了数据和变量名。确保仅选择数字变量或可以强制使用的变量,以便与函数一起使用。另外,由于该函数现在有两个参数,第一个是数据,因此您可以使用marnitrr管道(%>%)使其更具可读性,并可以在数据集上使用该函数。

test <- mtcars
normality_test<- function(my_data, x) {     
    return(shapiro.test(as.numeric(my_data[,x])))
    }
normality_test(test, "qsec")
© www.soinside.com 2019 - 2024. All rights reserved.