【发布时间】:2014-04-07 12:50:40
【问题描述】:
我有一个由浮点数组成的矩阵。我查过了,没有缺失值。
最近,我将列标题从(例如)更改为:
2670
到
COLUMN-HEADER-A-2670
我正在运行最近模板预测算法提供的代码,我无法更改。
我发现错误可能位于计算列轴上的平均值时,对于矩阵的每一行,即
exp.mean <- apply(exp.dataset,1,mean,na.rm=T)
所有行的平均值被强制为NA,R 控制台告诉我
Browse[2]> exp.mean <- apply(exp.dataset,1,mean,na.rm=T)
There were 50 or more warnings (use warnings() to see the first 50)
1: In mean.default(newX[, i], ...) :
argument is not numeric or logical: returning NA
我认为它与标题类型有关,但我找不到任何解释它的东西。该算法使用上一列符号。
【问题讨论】:
-
请将
dput(head(exp.dataset))的输出添加到您的问题中,以便我们重现您的问题。顺便说一句,您的代码的一个更快的替代方案是rowMeans。 -
您是否使用
read.table从文本文件中读取矩阵而不指定header = TRUE?如果是这样,文件的第一行(您认为是列名)将作为数据框中的第一行结束。 -
还要检查列类,错误消息说您要向函数传递非数字参数。
-
@Henrik 不,有
header = T。 @Roland 我无法添加它(dput),因为数据框有 19000 多行和 450 列,它导致数据集很长 - 我无法更改代码,因为我必须在发布时使用它。 @Jaap 我如何检查列类? -
您可以使用例如检查哪些列不是数字的
df <- data.frame(a = 10, b = 20, c = "30");which(sapply(df, class) != "numeric")
标签: r algorithm matrix mean na