我正在尝试在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中的格式,然后将其更改为数字?再次感谢。
非常感谢任何帮助。谢谢。
答案 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,则可以避免此问题。