如何在 R 中选择一系列列

How to choose a range of columns in R

我有一些数据,只想计算meansdvar等。我的问题不是功能而是列,我似乎无法弄清楚如何选择它们。

因此第一列包括动物的名称和第 2 至 11 列我的数字数据。 列名是 X1X10。 我的数据中有很多 NA

我可以很容易地为每一行计算它,但是当我将它们组合起来时,我总是得到

Argument is not numeric or logical: returning NA

例如,对于均值和我尝试过的一列(+有效)

mean(WLD1$X1, na.rm=TRUE)

对于第 2 至 11 列,我尝试了:

mean(WLD1[,c(2:11)], na.rm=TRUE)

也试过:

lapply(WLD1[,2:11], mean, na.rm=TRUE)

也用 X1:X10 试过了。
我想这很简单,但我只是坚持下去。非常感谢您的帮助。

您可能需要使用应用功能。 apply 函数的作用是接受一个函数(需要计算)并应用于 DataFrame 或矩阵的列或行的每个元素。行式和列式设置由 MARGIN= 参数编码,您想要进行的实际计算由 FUN= 编码(显然代表函数)。因此,如果您想在预期的 function/computation 中一次输入一行,那么您将选择 MARGIN=1 否则您将选择 MARGIN=2 (这意味着一次一列将被输入函数)。 因为在你的情况下你想计算列号 2 到 11 的均值、sd 和 var,你将分三个步骤完成,你是对的,我们将对所有三个 statments 设置 MARGIN=2,但 FUN= 将不断变化。下面是代码。

Mean_of_2_to_11_Column <- apply(WLD1[,2:11], MARGIN=2, FUN=mean)
SD_of_2_to_11_Column <- apply(WLD1[,2:11], MARGIN=2, FUN=sd)
Var_of_2_to_11_Column <- apply(WLD1[,2:11], MARGIN=2, FUN=var)

如果我在这里说的任何事情您不清楚,请告诉我。祝一切顺利

您可以使用 purrr 包。

library(purrr)
mydatabase %>% map_if(is.numeric, function(x) mean(x, na.rm = TRUE))

这将计算数据库中所有数字列的平均值,同时忽略 NA 值。