1

この問題のためにすべてをまとめることを願っています。私にとっては初めてで、説明するのは少し難しいです。

いくつかの属性を dbf ファイルに追加し、後でそれを保存して qgis で使用したいと考えています。選挙に関するもので、データは 11 政党からの絶対値と相対値の投票です。これには shapefiles パッケージを使用しますが、単純に外部でも試してみました。

私のシステム: RStudio 0.97.311、R 2.15.2、シェープファイル 0.7、外部 0.8-52、ubuntu 12.04

#1 を試す => 問題なし

shpDistricts <- read.shapefile(filename)
shpDataDistricts <- shpDistricts$dbf[[1]]
shpDataDistricts <- shpDataDistricts[, -c(3, 4, 5)] # delete some columns
shpDistricts$dbf[[1]] <- shpDataDistricts
write.shapefile(shpDistricts, filename))

#2 を試してください => 「get("write.dbf", "package:foreign")(dbf$dbf, out.name) のエラー: 行列/配列列を処理できません」

shpDistricts <- read.shapefile(filename)
shpDataDistricts <- shpDistricts$dbf[[1]]
shpDataDistricts <- shpDataDistricts[, -c(3, 4, 5)] # delete some columns
shpDataDistricts <- cbind(shpDataDistricts, votesDistrict[, 2]) # add a new column
names(shpDataDistricts)[5] <- "SPOE"
shpDistricts$dbf[[1]] <- shpDataDistricts
write.shapefile(shpDistricts, filename))

書き込み関数が「get("write.dbf", "package:foreign")(dbf$dbf, out.name) のエラー: 行列/配列列を処理できません」を返します

そのため、列 (整数) を data.frame に追加するだけでは、write.dbf 関数は書き出すことができなくなります。この単純な問題について、現在 3 時間デバッグしています。シェープファイルとdbfファイルを開いてシェープファイルパッケージで試してみましたが、常に同じ問題が発生しました。

外部パッケージ (read.dbf) を直接使用する場合。

投票データなしで dbf ファイルを保存しても (ステップ 1 + 2 からの小さな調整のみ)、問題ありません。投票データとのマージに関係しているに違いありません。

4

2 に答える 2

1

rgdal を使用して R でシェープファイルを操作しているときに、同じエラー メッセージ ("error in get("write.dbf"...)) が表示されました。シェープファイルに列を追加し、出力を保存しようとしたところ、エラーが発生しました。列をシェープファイルにデータフレームとして追加しました。 as.factor() を介してそれを因子に変換すると、エラーはなくなりました

shapefile$column <- as.factor(additional.column)

writePolyShape(シェープファイル、ファイル名)

于 2013-05-07T16:40:46.910 に答える