R中选定列的行平均

Rowwise mean on selected columns in R

让我们在著名的 iris 数据集上说明问题。我需要按行应用选定的函数,但仅适用于选定的列。示例如下:

library(tidyverse)

iris %>%
  mutate_at(.funs = scale, .vars = vars(-c(Species))) %>%
  rowwise() %>% 
  mutate(my_mean=mean(c(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width)))

所以,首先我缩放所有变量,不包括 Species,然后计算所有四个数字变量的行均值。但是,在真实数据集中,我有 100 多个数字变量,我想知道如何说服 R 自动包含除选定变量之外的所有变量(例如,给定示例中的 Species)。我在 SO 上查看了解决方案(例如,),但所有示例都明确引用了列名。非常欢迎任何指点。

编辑:经过一番修改后,我的解决方案是:

iris %>%
  as_tibble() %>% 
  mutate_at(.funs = scale, .vars = vars(-c(Species))) %>% 
  transmute(Species, row_mean = rowMeans(select(., -Species)))

我不确定我到底知道问题是什么,但这里有一些替代的 dplyr 解决方案,它们将为您提供除所选列之外的所有列的平均值:

iris %>%
    select(-Species) %>%
    mutate(Means = rowMeans(.))

iris %>%
    mutate(Means = rowMeans(.[,1:4]))

iris %>%
    mutate(Means = rowMeans(.[,-5]))

第一个是唯一从 return 中删除所选列的列。希望其中一位对你有帮助。