lapply 计算列表中数据帧均值的函数
lapply function to compute means of data frames inside a list
我正在尝试使用 lapply 函数计算列表中数据帧的均值。
df_list <- list(cars, mtcars)
sapply(df_list, mean)
上面的代码似乎不起作用。但是,当我将其更改为:
df_list <- c(cars, mtcars)
sapply(df_list, mean)
输出具有两个数据帧的所有变量的均值。
有没有一种方法可以使用第一种方法计算均值。
使用 purrr
库来实现这个...更简单:
library(purrr)
map(df_list, ~map_if(., is.numeric, mean))
如果你想返回 df 那么:
map_df(df_list, ~map_if(., is.numeric, mean))
答案来自这里:
信用应该去@Axeman
在 base R 中,您可以使用 rapply
来计算 data.frames 列表中包含的变量的均值。
# data
df_list <- list(cars, mtcars)
最简单的输出是 运行 rapply
带有两个参数,函数和 data.frames 的列表。函数 if(is.numeric(x)) mean(x)
检查变量是否为数字,如果是,则 return 是平均值。
# returns a vector of means
rapply(df_list, function(x) if(is.numeric(x)) mean(x))
此输出破坏了变量与其 data.frames 之间的关系。如果需要,我们可以 return 保留原始对象的结构中的值,长度为 2 的嵌套列表以及长度为 2 和 11 的内部列表。
rapply(df_list, function(x) if(is.numeric(x)) mean(x), how="list")
生成的结构可能比预期的更复杂。根据我的口味,
lapply(rapply(df_list, function(x) if(is.numeric(x)) mean(x), how="list"), unlist)
[[1]]
speed dist
15.40 42.98
[[2]]
mpg cyl disp hp drat wt qsec
20.090625 6.187500 230.721875 146.687500 3.596563 3.217250 17.848750
vs am gear carb
0.437500 0.406250 3.687500 2.812500
得到一个很好的平衡,一个长度为 2 的列表,每个列表包含均值的命名向量。
我正在尝试使用 lapply 函数计算列表中数据帧的均值。
df_list <- list(cars, mtcars)
sapply(df_list, mean)
上面的代码似乎不起作用。但是,当我将其更改为:
df_list <- c(cars, mtcars)
sapply(df_list, mean)
输出具有两个数据帧的所有变量的均值。
有没有一种方法可以使用第一种方法计算均值。
使用 purrr
库来实现这个...更简单:
library(purrr)
map(df_list, ~map_if(., is.numeric, mean))
如果你想返回 df 那么:
map_df(df_list, ~map_if(., is.numeric, mean))
答案来自这里:
在 base R 中,您可以使用 rapply
来计算 data.frames 列表中包含的变量的均值。
# data
df_list <- list(cars, mtcars)
最简单的输出是 运行 rapply
带有两个参数,函数和 data.frames 的列表。函数 if(is.numeric(x)) mean(x)
检查变量是否为数字,如果是,则 return 是平均值。
# returns a vector of means
rapply(df_list, function(x) if(is.numeric(x)) mean(x))
此输出破坏了变量与其 data.frames 之间的关系。如果需要,我们可以 return 保留原始对象的结构中的值,长度为 2 的嵌套列表以及长度为 2 和 11 的内部列表。
rapply(df_list, function(x) if(is.numeric(x)) mean(x), how="list")
生成的结构可能比预期的更复杂。根据我的口味,
lapply(rapply(df_list, function(x) if(is.numeric(x)) mean(x), how="list"), unlist)
[[1]]
speed dist
15.40 42.98
[[2]]
mpg cyl disp hp drat wt qsec
20.090625 6.187500 230.721875 146.687500 3.596563 3.217250 17.848750
vs am gear carb
0.437500 0.406250 3.687500 2.812500
得到一个很好的平衡,一个长度为 2 的列表,每个列表包含均值的命名向量。