R:为什么Means不能处理data.frame行,而rowMeans可以 在一个陌生的BeaHaveR中绊倒了。考虑下面的代码: > x <- data.frame(A=c("A","A"), B1=c(1,2), B2=c(1,2), B3=c(2,1)) > x A B1 B2 B3 1 A 1 1 2 2 A 2 2 1 > mean(x[1,-1]) [1] NA Warning message: In mean.default(x[1, -1]) : argument is not numeric or logical: returning NA > rowMeans(x[,-1]) [1] 1.333333 1.666667 >x A B1 B2 B3 1 A 11 2 2 A 2 1 >平均值(x[1,-1]) [1] NA 警告信息: 平均默认值(x[1,-1]): 参数不是数字或逻辑:返回NA >行均值(x[,-1]) [1] 1.333333 1.666667

R:为什么Means不能处理data.frame行,而rowMeans可以 在一个陌生的BeaHaveR中绊倒了。考虑下面的代码: > x <- data.frame(A=c("A","A"), B1=c(1,2), B2=c(1,2), B3=c(2,1)) > x A B1 B2 B3 1 A 1 1 2 2 A 2 2 1 > mean(x[1,-1]) [1] NA Warning message: In mean.default(x[1, -1]) : argument is not numeric or logical: returning NA > rowMeans(x[,-1]) [1] 1.333333 1.666667 >x A B1 B2 B3 1 A 11 2 2 A 2 1 >平均值(x[1,-1]) [1] NA 警告信息: 平均默认值(x[1,-1]): 参数不是数字或逻辑:返回NA >行均值(x[,-1]) [1] 1.333333 1.666667,r,R,尽管所有数据都是数字,但有人能解释一下为什么mean失败吗?这是因为类型平均值不适用于列表s: x[1]“列表” 类(x[1,-1]) #R> [1]“数据帧” 从?平均值: x 一个R对象。目前有用于数字/逻辑向量和日期、日期时间和时间间隔对象的方法。仅trim=0时允许使用复数向量 而从?行表示: x 两个或更多维度的数组,包含数字、复数、整数值或逻辑值,或数字数据帧。对于.colSums()等,是数字、整数或逻辑矩阵(或长度为m*n的向量) x[1,-1]是一个数字数据帧。奇怪的是,添加

尽管所有数据都是数字,但有人能解释一下为什么mean失败吗?

这是因为类型<代码>平均值不适用于
列表
s:

x[1]“列表”
类(x[1,-1])
#R> [1]“数据帧”
?平均值

x 一个R对象。目前有用于数字/逻辑向量和日期、日期时间和时间间隔对象的方法。仅trim=0时允许使用复数向量

而从
?行表示

x 两个或更多维度的数组,包含数字、复数、整数值或逻辑值,或数字数据帧。对于.colSums()等,是数字、整数或逻辑矩阵(或长度为m*n的向量)


x[1,-1]
是一个数字数据帧。

奇怪的是,添加as.vector也没有帮助,但是手工计算是有用的:
sum(x[1,])/length(x[1,]
你需要使用
unlist
is.vector(list())
TRUE
so
as.vector
只要再给你一次
列表就行了。非常混乱,但它是有效的。注意,每当从data.frame中提取行或列时,结果必须首先是“未列出的”在将其用于计算之前?这取决于方法。有些可能会处理
数据.frame
s,如
rowMeans
。但大多数不会。
mean(as.numeric(x[1,-1]))