colMeans和Summary don';行不通

colMeans和Summary don';行不通,r,statistics,R,Statistics,好时机 我是个初学者,在理解R方面有问题。 首先,我不明白为什么summary()不能正确处理data.frame 我有一个相当大的数据表2595x20,可以这样读: table=read.table('data.txt') statData <- data.frame(k1=table$V1[2:dim(table)[1]], k2=table$V2[2:dim(table)[1]],

好时机 我是个初学者,在理解R方面有问题。 首先,我不明白为什么
summary()
不能正确处理
data.frame
我有一个相当大的数据表2595x20,可以这样读:

table=read.table('data.txt')
statData <- data.frame(k1=table$V1[2:dim(table)[1]],       
                         k2=table$V2[2:dim(table)[1]], 
                         k3=table$V3[2:dim(table)[1]], 
                         k4=table$V4[2:dim(table)[1]],
                         k5=table$V5[2:dim(table)[1]],
                         k6=table$V6[2:dim(table)[1]],
                         k7=table$V7[2:dim(table)[1]],
                         k8=table$V8[2:dim(table)[1]],
                         k9=table$V9[2:dim(table)[1]],
                         k10=table$V10[2:dim(table)[1]],
                         k11=table$V11[2:dim(table)[1]],
                         k12=table$V12[2:dim(table)[1]],
                         k13=table$V13[2:dim(table)[1]],
                         k14=table$V14[2:dim(table)[1]],
                         k15=table$V15[2:dim(table)[1]],
                         k16=table$V16[2:dim(table)[1]],
                         k17=table$V17[2:dim(table)[1]],
                         k18=table$V18[2:dim(table)[1]],
                         k19=table$V19[2:dim(table)[1]],
                         k20=table$V20[2:dim(table)[1]])
attach(statData)
这对我来说毫无意义

colMeans可计算错误:

> colMeans(statData)
Error in colMeans(statData) : 'x' must be numeric
但我的数据绝对是数字。 据我所知,这是因为k1-k20是因子。好吧,但当我尝试将它们转换为.numeric(levels(k1)[k1])时,我想可能会有不同的数据作为索引。
因此,问题是如何使这些函数正常工作,可能是改变了表格读取或转换的方式,或者其他什么?

我们可以为
因子
列创建索引,将
更改为
数值
,并执行
colMeans

i1 <- sapply(statData, is.factor)
statData[i1] <- lapply(statData[i1], function(x) as.numeric(as.character(x)))
colMeans(statData)

i1检查
str(statData)
sapply(statData,class)
以查找是否所有列都是
numeric
是的,它们不是数字,我已经编写了“data.frame”:2595 obs。在20个变量中:$k1:系数w/2591水平“0.248322148”,…:40518081225671652240427423981929863…$k2:系数w/2582水平“0”,“0.00013032”,“1353 2081 71 2414 248 2500 341 2486 1664 1379…”k3:Factor w/2594级别“0.00982686”,“0.041484213”,“1611 1938 40 2477 1907 2465 242 2372 1720 928…”好的,所以您有几个
Factor
类列,它们不是
数值
。将其转换为
numeric
,即
i1您的数据不会作为数字读入。数据中有非数字,可能编码
NA
值。修复数据导入。尝试删除第一行(以非常复杂和迂回的方式)表示可能有列标题,应该在
read.table
@8txra中设置
header=TRUE
。解决实际问题。
i1 <- sapply(statData, is.factor)
statData[i1] <- lapply(statData[i1], function(x) as.numeric(as.character(x)))
colMeans(statData)