【问题标题】:Creating a formula in R [duplicate]在R中创建一个公式[重复]
【发布时间】:2020-09-15 13:02:22
【问题描述】:

我正在尝试创建一个公式,我可以用它来快速检查不同变量的正态性。我是 R 新手,不太确定如何进行。这是我的尝试,但它不起作用:

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

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

normality_test("variable name")

【问题讨论】:

  • 感谢您的回答。我尝试了 test_normality

标签: r function variables


【解决方案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 函数。

【讨论】:

  • 谢谢!以及如何循环这个公式,以便为数据框中的所有变量运行它?
  • 更新了答案以包含它。
【解决方案2】:

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

test <- mtcars
normality_test<- function(my_data, x) {     
    return(shapiro.test(as.numeric(my_data[,x])))
    }
normality_test(test, "qsec")

【讨论】:

  • 太好了,它让它更清晰了,谢谢!
  • @Dion 很高兴为您提供帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-07
  • 2022-11-01
  • 2018-05-23
  • 1970-01-01
  • 2018-09-13
  • 2012-12-10
相关资源
最近更新 更多