我有一个数据文件,格式从上面开始。
我将其加载到R中,并尝试使用dist列中的值绘制直方图,但出现错误“ x必须是数字”。因此,我尝试更改格式。
> head(data)
V1 V2
1 type gene_dist
2 A 64667
3 A 76486
4 A 97416
5 A 30876
6 A 88018
> summary(data)
V1 V2
A : 67 100 : 1
B :122 100906 : 1
type: 1 102349 : 1
1033 : 1
10544 : 1
10745 : 1
(Other):184
我尝试使用
sapply
设置列的格式,但值已更改:> data[,2]<-sapply(data[,2],as.numeric)
> head(data)
V1 V2
1 type 190
2 A 146
3 A 166
4 A 189
summary(data)
V1 V2
A : 67 Min. : 1.00
B :122 1st Qu.: 48.25
type: 1 Median : 95.50
Mean : 95.50
3rd Qu.:142.75
Max. :190.00
有人知道为什么会这样吗?
最佳答案
看来您的第二列是一个因素。您需要在as.character
之前使用as.numeric
。这是因为因子在内部以整数形式存储在表格中,以提供因子级别标签。仅使用as.numeric
只会给出内部整数代码。由于这些功能是矢量化的,因此无需使用sapply
。
data[,2] <- as.numeric(as.character(data[,2]))
由于某些条目中包含一些非数字字符,因此该列可能是一个因素。任何此类条目都会在适当的警告下转换为
NA
,但是您可能希望在原始数据中进行调查。附带说明一下,对于变量名,
data
是较差的(尽管不是无效的)选择,因为存在相同名称的基函数。关于r - 将列类型转换为数值时更改值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6328771/