'x'必须是数字R错误

时间:2017-09-23 21:45:27

标签: r

我正在尝试在R中进行Hartigan的diptest,但是,我得到以下错误:'x'必须是数字。

对这样一个基本问题表示歉意,但我如何确保我加载的数据是数字?

如果我按如下方式编写一组值(下面的代码),则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 个答案:

答案 0 :(得分:2)

这里发生了什么。如果您运行您知道可行的代码,那么它正在运行,因为数据类应该是numeric。然而,当你在它中读回数据框时。所以你需要指向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,则可以避免此问题。