density.default中的错误:x必须是数字

时间:2012-12-07 12:37:08

标签: r error-handling

这个问题可能已经重复过了。但即使经过前面的链接,我也无法解决这个问题。我有一个文件如下:

data <- read.table("data.txt", header=TRUE)

             Samp1           Samp2     Samp3
cg00000029  0.79015390399987 0.8301816 0.8966661
cg00000108 0.970260858767027 0.9655997 0.9699428
cg00000109 0.948456317952246 0.9209855 0.9325146
cg00000165 0.267769194351135 0.2370634 0.3867273

我希望从列中创建一个密度图(比如Samp1)。当我使用以下

>plot(density(na.omit(data$Samp1)), col="black")

我收到以下错误:

Error in density.default(na.omit(data$Samp1)) : argument 'x' must be numeric

任何人都可以帮我知道如何纠正这个问题吗?我已经为类似的文件创建了密度图,但没有得到这个错误。它仅适用于此文件。

你的帮助表示赞赏。 提前谢谢..

2 个答案:

答案 0 :(得分:1)

嗯,由于某种原因,您的数据是非数字的:您是否尝试过使用as.numeric()将其强制转换为正确的类型?

编辑:使用unlist()将其转换为列表类型似乎是答案

答案 1 :(得分:0)

我遇到了同样的问题,我可以通过以下方法解决它:

a<- density(treeDF$real)
plot(a$x, a$y, col="turquoise2")
b<- density(treeDF$rpart)
lines(b$x, b$y, col="deeppink3")
c<- density(treeDF$rpart_Fourier)
lines(c$x, c$y, col="blue")
legend("topright", legend = c("real value", "rpart()", "rpart() + Fourier tem"),
    col=c("turquoise2", "deeppink3", "blue"), lty=1:1, cex=0.8, box.lty = 0)

enter image description here