この問題のためにすべてをまとめることを願っています。私にとっては初めてで、説明するのは少し難しいです。
いくつかの属性を 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 からの小さな調整のみ)、問題ありません。投票データとのマージに関係しているに違いありません。