我有一个上面格式的数据文件.
我把它加载到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
Run Code Online (Sandbox Code Playgroud)
我尝试使用列设置格式,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
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么会这样?
Jam*_*mes 46
看起来你的第二列是一个因素.你as.character以前需要使用as.numeric.这是因为因子在内部存储为带有表的整数,以给出因子级别标签.只是使用as.numeric将只给出内部整数代码.没有必要使用,sapply因为这些功能是矢量化的.
data[,2] <- as.numeric(as.character(data[,2]))
Run Code Online (Sandbox Code Playgroud)
列可能是一个因素,因为某些条目中存在一些非数字字符.任何此类条目都将转换为NA适当的警告,但您可能希望在原始数据中对此进行调查.
作为附注,data由于存在同名的基本函数,因此变量名称的选择很差(尽管不是无效).