2016-11-22 25 views
-4

Я хотел бы выполнить подмножество в моем шейп-файле без указания имени первого столбца в файле .dbf. Чтобы быть более точным, я хотел бы выбрать все строки со значением 1 в первом столбце .dbf, но я не хочу указывать имя этого столбца.Не удалось подмножить данные в файле формы

Например, этот скрипт работает, потому что я указать имя столбца (как ColumnName)

library(rgdal) # readOGR 

shapeIn <- readOGR(nomeFile) 
shapeOut <- subset(shapeIn, columnName == 1) 

вместо этого он не работает

shapeOut <- (shapeIn[,1] == 1) 

и я получаю сообщение об ошибке: сравнение (1) возможно только для атомных и типов списка shapeOut и shapeIn являются векторными файлами ESRI.

Это заголовок моего shapeIn

coordinates mask_1000_ 
1 (54000, 1218000)   0 
2 (55000, 1218000)   0 
3 (56000, 1218000)   0 

Можете ли вы мне помочь? Спасибо

+0

Дорогое сообщество, мое сообщение, озаглавленное «Не удалось подмножить данные в шейп-файле», было опущено 4 раза. Тем не менее, проблема была решена LoBu 24 ноября. Не могли бы вы указать, что мне нужно сделать, чтобы удалить мой запрет, потому что я хотел бы снова использовать форум. Большое спасибо. – ilFonta

ответ

2

Это

shapeOut <- (shapeIn[,1] == 1) 

не работает beacuse SpatialPolygonsDataFrames содержать другую информацию, кроме данных. Таким образом, «общее» подмножество data.frame работает не так. Для того, чтобы иметь его работу, вы должны сделать «логическую проверку» для Подмените на @data слота: это должно работать (либо с использованием подмножества или «прямая» индексация):

shapeOut <- subset(shapeIn, [email protected][,1] == 1) 

ИЛИ

shapeOut <- shapeIn[[email protected][,1] == 1,] 

(однако по недавнему опыту ссылки на данные по номерам столбцов редко бывают хорошей идеей ... ;-))

ciao Giacomo !!!

+0

Спасибо, дорогой Лоренцо. Ciao, un abbraccio !!! – ilFonta

 Смежные вопросы

  • Нет связанных вопросов^_^