2017-09-23 110 views
0

我想在R中做Hartigan的diptest,但是,我得到以下错误:'x'必须是数字。'x'必须是数字R错误

对于这样的基本问题抱歉,但我如何确保我加载的数据是数字?

如果我做了一套价值为(下面的代码)如下,该diptest工作没有问题:

library(diptest)                          
x = c(1,2,3,4,4,4,4,4,4,4,5,6,7,8,9,9,9,9,9,9,9,9,9)  
hist(x) 
dip.test(x)  

但是例如,当相同的值保存在一个Excel文件/制表符分隔。 txt文件(保存为一列值),并导入到R中,当我运行diptest时,'x'必须是数字错误发生。有没有办法来检查导入的数据从Excel/.txt文件的格式是R,然后将其更改为数字?再次感谢。

任何帮助将不胜感激谢谢。

+1

'read.table'返回'data.frame'。它的一些或全部列可能是“数字”的。如果'x'是这样一列,那么'hist(Dat $ x)'会绘制直方图。但在你的问题中,你阅读'Dat',然后使用'hist'的其他东西。没有多大意义。发布'str(Dat)'或者'dput(head(Dat,20))'的输出。 –

+0

道歉 - 我已经编辑了我的问题(评论中没有足够的空间),希望能让它更清晰一些。我会看看谢谢你。 – StatsCode

回答

2

这是发生了什么事。如果你运行你知道可用的代码,它就可以工作,因为数据类应该是numeric。但是,当您将其读回时,它是一个data.frame。所以,你需要指向data.frame的数字要素:

library(diptest)                          
x = c(1,2,3,4,4,4,4,4,4,4,5,6,7,8,9,9,9,9,9,9,9,9,9) 

write.csv(x, "x.csv", row.names=F) 
x <- read.csv("x.csv") # comes back in as a data frame 

hist(x$x) 

dip.test(x$x) 
Hartigans' dip test for unimodality/multimodality 

data: x$x 
D = 0.15217, p-value = 2.216e-05 
alternative hypothesis: non-unimodal, i.e., at least bimodal 

如果你将文件保存到.RDS代替的.csv,那么你可以避开这个问题。

相关问题