2017-08-03 5 views
0

データフレームを使用してas.ppp機能を使用してマークされたポイントプロセスを作成しています。エラーError: is.numeric(x) is not TRUEが表示されます。次のように私が使用していたデータは以下のとおりです。マークされたプロセスを作成するためにデータフレームにas.pppを使用

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")) 

は、私が最初の2つの列が数値であることを見ることができるので、それが問題である理由を私は知りません。

> 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

> sum(is.na(pointDataUTM$POINT_X)) 
[1] 0 
> sum(is.na(pointDataUTM$POINT_Y)) 
[1] 0 

私はdata.frameのも、最初の2つの列をしようとしたとき、私はas.pppを使用して取得エラーがあるを示していないNA、をチェックこれは:

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

私は電話をしているので、確認できませんが、あなたはデータがないので、それは起こると思います。まずas.data.frameを使ってdata.frameに変換してみてください。

+0

はい、私はdplyrを使用してcsvからデータフレームを作成したため、このような場合があります。 – BKS

1

PointDataUTM$POINT_Xではなく、PointDataUTM[,1]が数値であるかどうかが重要です。 PointDataUTMので

tblオブジェクトであり、tbldplyrパッケージから関数である、どのようなおそらく起こっされる場合、単一の列tblクラスの部分集合演算子は、数値ベクトルデータフレームを返すとされないことですが抽出される。 $演算子は数値ベクトルを返します。

data.frameas.data.frame()を使用してデータを変換してからas.pppを呼び出すことをおすすめします。

spatstatの次のバージョンでは、この種の問題に対してより堅牢なコードを作成します。

+0

はい、xとyは、私のdputステートメントで見られる最初の2つの列です。私は列インデックスとdf $ nameの両方でチェックしました。 – BKS

関連する問題