我正在使用数据框来使用as.ppp
函数创建标记点过程。我收到错误Error: is.numeric(x) is not TRUE
。我使用的数据如下:
dput(head(pointDataUTM[,1:2]))
structure(list(POINT_X = c(439845.0069, 450018.3603, 451873.2925,
446836.5498, 445040.8974, 442060.0477), POINT_Y = c(4624464.56,
4629024.646, 4624579.758, 4636291.222, 4614853.993, 4651264.579
)), .Names = c("POINT_X", "POINT_Y"), row.names = c(NA, -6L), class = c("tbl_df",
"tbl", "data.frame"))
我可以看到前两列是数字的,所以我不知道它为什么会出问题。
> str(pointDataUTM)
Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 5028 obs. of 31 variables:
$ POINT_X : num 439845 450018 451873 446837 445041 ...
$ POINT_Y : num 4624465 4629025 4624580 4636291 4614854 ...
然后我还检查了NA,它显示没有NA
> sum(is.na(pointDataUTM$POINT_X))
[1] 0
> sum(is.na(pointDataUTM$POINT_Y))
[1] 0
当我甚至只尝试data.frame的前两列时,我使用as.ppp得到的错误就是这样:
Error: is.numeric(x) is not TRUE
5.stop(sprintf(ngettext(length(r), "%s is not TRUE", "%s are not all TRUE"), ch), call. = FALSE, domain = NA)
4.stopifnot(is.numeric(x))
3.ppp(X[, 1], X[, 2], window = win, marks = marx, check = check)
2.as.ppp.data.frame(pointDataUTM[, 1:2], W = studyWindow)
1.as.ppp(pointDataUTM[, 1:2], W = studyWindow)
有人能告诉我这里的错误是什么以及为什么我得到非数字错误?
谢谢。
答案 0 :(得分:1)
严格检查PointDataUTM[,1]
是否为数字,而不是PointDataUTM$POINT_X
。
由于PointDataUTM
是tbl
对象,tbl
是dplyr
包中的函数,所以可能发生的是{{1}的子集运算符当提取单个列时,class返回数据框,而不是数字向量。而tbl
运算符返回一个数字向量。
我建议您在致电$
之前使用data.frame
将数据转换为as.data.frame()
。
在as.ppp
的下一个版本中,我们将使代码更加强大,可以解决此类问题。
答案 1 :(得分:0)
我正在打电话,所以无法检查,但我认为这是因为你有一个tibble而不是data.frame。请先尝试使用as.data.frame转换为data.frame。