如何 lapply() 数据框列表上的公式。或者如何对数据帧列表执行 kruskal.test()
How to lapply() a formula over a dataframe list. or how to perform kruskal.test() over a list of dataframes
所以我有这个数据并试图对包含数据帧
的列表进行kruskal.test()
df_list <- list(
`1.3.A` =
tibble::tribble(
~Person, ~Height, ~Weight,
"Alex", 175L, 75L,
"Gerard", 180L, 85L,
"Clyde", 179L, 79L,
"Alex", 175L, 75L,
"Gerard", 180L, 85L,
"Clyde", 179L, 79L
),
`2.2.A` =
tibble::tribble(
~Person, ~Height, ~Weight,
"Alex", 175L, 75L,
"Gerard", 180L, 85L,
"Clyde", 179L, 79L,
"Alex", 175L, 75L,
"Gerard", 180L, 85L,
"Clyde", 179L, 79L
),
`1.1.B` =
tibble::tribble(
~Person, ~Height, ~Weight,
"Alex", 175L, 75L,
"Gerard", 180L, 85L,
"Clyde", 179L, 79L,
"Alex", 175L, 75L,
"Gerard", 180L, 85L,
"Clyde", 179L, 79L
)
)
我正在尝试对这 3 个数据帧执行 kruskal.test
,但在尝试寻找解决方案的数小时后失败了。我是 R 的新手。
失败的尝试是:
snake <- function(i){
kruskal.test(df$Height ~ df$Person, data = i)
}
snail <- lapply(df_list, "[[", snake)
df_list %>% kruskal.test(df$Height ~ df$Person)
sapply(df_list, function(i) { kruskal.test(df$Height ~ df$Person, data = i)})
Map(function(x) kruskal.test(Height ~ Person), get(df_list))
Map(function(df_list, .f(kruskal.test(Height ~ Person)))
lapply(mget(df_list), function(x) kruskal.test(Height ~ Person))
bunny <- df_list %>%
kruskal_test(df$Height ~ Person, data = .)
总结:我正在尝试对一组包含数据帧的列表执行 kruskal.test()
。如何通过 lapply()
或 Map()
将公式传递给 运行 列表中每个数据帧中的 kruskal.test()
?
您的代码引用了一个名为“df”的对象,该对象似乎并不存在。此外,在将 kruskal.test
与参数 kruskal.test(formula, data)
一起使用时,无需在公式中引用数据框。提供 kruskal.test
“数据”参数将导致函数首先在提供的数据中搜索公式符号。换句话说,如果数据框“x”包含列“Height”和“Person”,则以下内容有效:
kruskal.test(Height ~ Person, data = x)
在您的示例中,您不应引用 df
。请注意,下面的代码创建了一个带有名为“i”的参数的临时函数,并且随后引用了“i”:
lapply(df_list, function(i) kruskal.test(Height ~ Person, data = i))
$`1.3.A`
Kruskal-Wallis rank sum test
data: Height by Person
Kruskal-Wallis chi-squared = 5, df = 2, p-value = 0.08208
$`2.2.A`
Kruskal-Wallis rank sum test
data: Height by Person
Kruskal-Wallis chi-squared = 5, df = 2, p-value = 0.08208
$`1.1.B`
Kruskal-Wallis rank sum test
data: Height by Person
Kruskal-Wallis chi-squared = 5, df = 2, p-value = 0.08208
所以我有这个数据并试图对包含数据帧
的列表进行kruskal.test()
df_list <- list(
`1.3.A` =
tibble::tribble(
~Person, ~Height, ~Weight,
"Alex", 175L, 75L,
"Gerard", 180L, 85L,
"Clyde", 179L, 79L,
"Alex", 175L, 75L,
"Gerard", 180L, 85L,
"Clyde", 179L, 79L
),
`2.2.A` =
tibble::tribble(
~Person, ~Height, ~Weight,
"Alex", 175L, 75L,
"Gerard", 180L, 85L,
"Clyde", 179L, 79L,
"Alex", 175L, 75L,
"Gerard", 180L, 85L,
"Clyde", 179L, 79L
),
`1.1.B` =
tibble::tribble(
~Person, ~Height, ~Weight,
"Alex", 175L, 75L,
"Gerard", 180L, 85L,
"Clyde", 179L, 79L,
"Alex", 175L, 75L,
"Gerard", 180L, 85L,
"Clyde", 179L, 79L
)
)
我正在尝试对这 3 个数据帧执行 kruskal.test
,但在尝试寻找解决方案的数小时后失败了。我是 R 的新手。
失败的尝试是:
snake <- function(i){
kruskal.test(df$Height ~ df$Person, data = i)
}
snail <- lapply(df_list, "[[", snake)
df_list %>% kruskal.test(df$Height ~ df$Person)
sapply(df_list, function(i) { kruskal.test(df$Height ~ df$Person, data = i)})
Map(function(x) kruskal.test(Height ~ Person), get(df_list))
Map(function(df_list, .f(kruskal.test(Height ~ Person)))
lapply(mget(df_list), function(x) kruskal.test(Height ~ Person))
bunny <- df_list %>%
kruskal_test(df$Height ~ Person, data = .)
总结:我正在尝试对一组包含数据帧的列表执行 kruskal.test()
。如何通过 lapply()
或 Map()
将公式传递给 运行 列表中每个数据帧中的 kruskal.test()
?
您的代码引用了一个名为“df”的对象,该对象似乎并不存在。此外,在将 kruskal.test
与参数 kruskal.test(formula, data)
一起使用时,无需在公式中引用数据框。提供 kruskal.test
“数据”参数将导致函数首先在提供的数据中搜索公式符号。换句话说,如果数据框“x”包含列“Height”和“Person”,则以下内容有效:
kruskal.test(Height ~ Person, data = x)
在您的示例中,您不应引用 df
。请注意,下面的代码创建了一个带有名为“i”的参数的临时函数,并且随后引用了“i”:
lapply(df_list, function(i) kruskal.test(Height ~ Person, data = i))
$`1.3.A`
Kruskal-Wallis rank sum test
data: Height by Person
Kruskal-Wallis chi-squared = 5, df = 2, p-value = 0.08208
$`2.2.A`
Kruskal-Wallis rank sum test
data: Height by Person
Kruskal-Wallis chi-squared = 5, df = 2, p-value = 0.08208
$`1.1.B`
Kruskal-Wallis rank sum test
data: Height by Person
Kruskal-Wallis chi-squared = 5, df = 2, p-value = 0.08208