Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何将函数应用于多个列,然后生成平均值?_R_Rstudio - Fatal编程技术网

R 如何将函数应用于多个列,然后生成平均值?

R 如何将函数应用于多个列,然后生成平均值?,r,rstudio,R,Rstudio,我有一个如下所示的数据集。对于这个数据集,我有一个函数,它为一列创建一个值。我的问题是如何将此函数应用于coulmns 2到2536,然后取所有结果的平均值 ids V1 V2 V3 V4 ...... 12 1 1 2 NA 13 2 1 3 1 18 NA 2 3 3 19 1 1 NA 1 AI <- function(AI) { ((sort(table(AI),decreasing=TRUE)[1])-0.5* (sum(!is.na(

我有一个如下所示的数据集。对于这个数据集,我有一个函数,它为一列创建一个值。我的问题是如何将此函数应用于coulmns 2到2536,然后取所有结果的平均值

ids V1 V2 V3 V4 ......
12  1  1  2  NA
13  2  1  3  1
18  NA 2  3  3
19  1  1  NA 1

AI <- function(AI) {
  ((sort(table(AI),decreasing=TRUE)[1])-0.5*
     (sum(!is.na(AI))
      - (sort(table(AI),decreasing=TRUE)[1]))) /sum(!is.na(AI))
}
ids V1 V2 V3 V4。。。。。。
12 1 2 NA
13  2  1  3  1
18 NA 2 3 3
191 NA 1
像这样的东西

library(tidyverse)

df=read_table("ids V1 V2 V3 V4 
12  1  1  2  NA
13  2  1  3  1
18  NA 2  3  3
19  1  1  NA 1")
df %>% 
  select(contains('V')) %>% 
  mutate_at(vars(contains('V')),funs( (.-0.5*sum(.,na.rm = T))/sum(.,na.rm = T) )) %>% 
  replace(is.na(.),0) %>% as.matrix() %>% 
  mean

首先,构建您的功能:

 my_func <- function(x) x*2

希望有帮助

mean
对于每列或所有列
2:2536
?您试图从哪本手册获得答案,但失败了?请编辑问题并显示该类型的努力。如果有关于Stackoverflow的问题显示了类似的链接,并解释一下为什么它不适合你。
library(dplyr)         # a part  of tidyverse
df %>% 
  mutate_at( vars(2:5), my_func ) %>% # apply my_func to columns 2 to 5
  summarise_all( mean, na.rm = T)     # apply mean to all columns

#   ids       V1  V2       V3       V4
#  15.5 2.666667 2.5 5.333333 3.333333