Загрузить несколько наборов данных, используя al oop r - PullRequest
0 голосов
/ 29 февраля 2020

Я пытаюсь повторить один и тот же код для примерно 270 наборов данных: houses и village.

У меня есть одна пара наборов данных для каждой деревни, т.е. Houses_1 village_1, Houses_2 village_2 и так далее.

Вот мой код:

houses = read.csv("gis/village/houses_1.csv")
village = read.csv("gis/village/village_1.csv")
coordinates(houses)<-~LAT+LON
proj4string(houses) <- CRS("+init=epsg:4326")
coordinates(village)<-~LAT+LON
proj4string(village) <- CRS("+init=epsg:4326")
houses@data$dist_center <- apply(t(gDistance(houses,village,byid = TRUE)),MARGIN = 1, FUN = "min")
library(foreign)
houses <- data.frame(houses)
write.dta(houses, "houses.dta")
remove(houses, village)

Поскольку у меня так много пар, я хотел бы использовать al oop, чтобы избежать необходимости писать 270 раз один и тот же код. У кого-нибудь есть идеи о том, как я могу это сделать?

x <- list(1,2,3,4,5,6)
for (i in x){
houses <- read.csv("gis/village/houses_[i].csv")
village = read.csv("gis/village/village_[i].csv")
coordinates(houses)<-~LAT+LON
proj4string(houses) <- CRS("+init=epsg:4326")
coordinates(village)<-~LAT+LON
proj4string(village) <- CRS("+init=epsg:4326")
houses@data$dist_center <- apply(t(gDistance(houses,village,byid = TRUE)),MARGIN = 1, FUN = "min")
library(foreign)
houses <- data.frame(houses)
write.dta(houses, "houses[i].dta")
remove(houses, village)

1 Ответ

0 голосов
/ 29 февраля 2020

Это должно сделать это:

for (i in 1:270) {
houses <- read.csv(paste0("gis/village/houses_",i,".csv"))
village = read.csv(paste0("gis/village/village_",i,".csv"))
...
write.dta(houses, paste0("houses",i,".dta"))

Кроме того, вам не хватает } в конце l oop.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...