我是r的新手,所以也许这很明显,但是我不确定发生了什么。我加载的文件中包含一堆数据,然后将其拆分为单独的数据帧。它们看起来像:
V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14
3 1.000 2 3 4 5 6 7.000 8.000 9.000 10.000 11.000 12.000
4 0.042 0.067 0.292 0.206 0.071 0.067 0.040 0.063 0.059 0.040 0.066 0.040
5 0.043 0.172 0.179 0.199 0.073 0.067 0.040 0.062 0.058 0.039 0.066 0.039
6 0.040 0.066 0.29 0.185 0.072 0.067 0.040 0.062 0.058 0.039 0.065 0.039
7 0.039 0.068 0.291 0.189 0.075 0.069 0.040 0.064 0.058 0.041 0.064 0.039
8 0.042 0.063 0.271 0.191 0.07 0.068 0.040 0.065 0.058 0.041 0.066 0.040
9 0.041 0.067 0.342 0.199 0.069 0.066 0.041 0.065 0.057 0.040 0.065 0.042
10 0.044 0.064 0.295 0.198 0.069 0.067 0.039 0.064 0.057 0.040 0.067 0.041
11 0.041 0.067 0.29 0.211 0.066 0.067 0.043 0.056 0.058 0.042 0.067 0.042
我正在尝试为每列查找第4-6行和第7-9行的均值。我在名为“板”的列表中有每个数据框。当我使用该行时:
plates[[1]][2:4, 7]
我最终得到了输出:
[1] 0.04 0.04 0.04
如果我在上面的代码中包含mean(),则它对于第7列及更高列适用。但是,当我对低于7的列使用相同的代码时,例如说2列,我最终得到:
[1] 0.067 0.172 0.066
57 Levels: 0.063 0.064 0.066 0.067 0.068 0.069 0.07 0.071 0.072 0.08 0.081 0.082 0.083 0.084 0.085 ... PlateFormat
我不知道这57个级别是什么:事情是,但我假设这是我的问题。我只想要3个数字的平均值(0.067、0.172、0.066),但是返回的这57个级别似乎导致mean()给我标题错误。任何帮助,将不胜感激。
答案 0 :(得分:2)
该列中某处的某个条目无法处理为数字,因此read.csv()
(或您使用的任何对象)正在将数据作为因素读取。可能是拼写错误(有点像多余的小数点或逗号),或者是缺少值的代码,例如“?”
您可以使用
numify <- function(x) as.numeric(as.character(x))
mydata[] <- lapply(mydata, numify)
通过蛮力进行转换,但最好使用
bad_vals <- function(x) {
x[!is.na(x) & is.na(numify(x))
}
lapply(mydata, bad_vals)
识别错误值是什么,因此您可以在数据文件的上游修复它们(或在输入代码的na.strings=
参数中添加缺失值代码)