R中选定列的行方向均值

And*_*rej 2 r dplyr tidyverse

让我们来说明着名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)))
Run Code Online (Sandbox Code Playgroud)

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

编辑:经过一些改变,这是我的解决方案:

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

csg*_*oen 8

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

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

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

iris %>%
    mutate(Means = rowMeans(.[,-5]))
Run Code Online (Sandbox Code Playgroud)

第一个是从返回中删除所选列的唯一一个.希望他们中的一个可以帮到你.