计算R中每个matrix的平均值
我在R工作室工作。 我需要计算数据框的每列的平均值。
cluster1 // 5 by 4 data frame mean(cluster1) // 我有 :
  Warning message: In mean.default(cluster1) : argument is not numeric or logical: returning NA 
但我可以使用
  mean(cluster1[[1]]) 
得到第一列的平均值。
如何获得所有列的手段?
任何帮助,将不胜感激。
 你可以使用colMeans : 
 ### Sample data set.seed(1) m <- data.frame(matrix(sample(100, 20, replace = TRUE), ncol = 4)) ### Your error mean(m) # [1] NA # Warning message: # In mean.default(m) : argument is not numeric or logical: returning NA ### The result using `colMeans` colMeans(m) # X1 X2 X3 X4 # 47.0 64.4 44.8 67.8 
你可以使用'apply'来运行一个函数或matrix或数字数据框的行或列:
 cluster1 <- data.frame(a=1:5, b=11:15, c=21:25, d=31:35) apply(cluster1,2,mean) # applies function 'mean' to 2nd dimension (columns) apply(cluster1,1,mean) # applies function to 1st dimension (rows) sapply(cluster1, mean) # also takes mean of columns, treating data frame like list of vectors 
另一种方法是使用呜声包
 # example data like what is said above 
@手推车和马海毛
 set.seed(1) m <- data.frame(matrix(sample(100, 20, replace = TRUE), ncol = 4)) library(purrr) means <- map_dbl(m, mean) > means # X1 X2 X3 X4 #47.0 64.4 44.8 67.8 
如果你有NA:
 sapply(data, mean, na.rm = T) # Returns a vector (with names) lapply(data, mean, na.rm = T) # Returns a list 
请记住,“意思”需要数字数据。 如果您有混合的类数据,则使用:
 numdata<-data[sapply(data, is.numeric)] sapply(numdata, mean, na.rm = T) # Returns a vector lapply(numdata, mean, na.rm = T) # Returns a list