我有以下一系列命令:
my_data = read.csv(file='r-stats.out', sep='\t', skip=1)
histsub = subset(my_data, my_data[,10] != "Invalid")
hist(as.numeric(histsub[,10]))
r-stats.out是一个包含10列的文件,第10列(我试图绘制的一个)的数字范围从-2000到10000或单词“Invalid”,我尝试先过滤掉。出于某种原因,我的直方图的范围从0到2500忽略其他所有内容。为什么?怎么了?我做了一个
print(histsub)
一切看起来都没问题,这些数字都在他们的网站上,但不是在情节上。请帮忙。
编辑:从my_data print和histsub添加几行: my_data:
38 629345 1 633201 0 -41 Invalid 0 g 0 -37
39 633201 0 628727 0 4496 323 0 g 0 4629
40 628727 0 631371 1 7835 202 0 g 0 Invalid
41 631371 1 625871 1 7317 112 0 g 0 7379
42 625871 1 633427 1 1351 348 0 g 0 1321
histsub:
38 629345 1 633201 0 -41 Invalid 0 g 0 -37
39 633201 0 628727 0 4496 323 0 g 0 4629
41 631371 1 625871 1 7317 112 0 g 0 7379
42 625871 1 633427 1 1351 348 0 g 0 1321
答案 0 :(得分:3)
尝试my_data[,10]=as.numeric(as.character(my_data[,10]))
,然后所有Invalid
字符串条目都将转换为NA
,并且无论如何都不会显示在直方图中。
答案 1 :(得分:2)
这意味着它的类是字符,所以它可能隐含地转换为因子,并且有大约2500个独特的。尝试在read.csv中使用参数stringsAsFactors = FALSE