Я являюсь основным пользователем R, которому нужна ваша помощь. У меня есть несколько файлов данных, которые я хочу обработать, создав функцию цикла; в основном, импортировать один или два файла, обрабатывать и удалять их; и повторите этот процесс несколько раз. Тем не менее, я застрял, вероятно, с простыми кодами для многих из вас. Пожалуйста, помогите мне решить эту проблему.R: создать цикл для импорта, управления (пространственного соединения) нескольких файлов
Просто я могу импортировать и обрабатывать данные с одним файлом, а затем.
test <- read.table("test.txt", header = FALSE, sep='\t', stringsAsFactors = FALSE)
test<-as.data.frame(test)
## prepared for spatial joining with polygon
coordinates(test)=~lon+lat
proj4string(test)=CRS("+proj=longlat +datum=NAD83")
## Import gis polygon shapefile
ZIPshp <-readShapeSpatial("D:/data/gis/Zipcode.shp",proj4string=CRS("+proj=longlat +datum=NAD83"))
## spatial join b/w point and polygon
test_zip <- over(test, ZIPshp[,"zipc"])
test_zip <- subset(test_zip, zipc!="")
write.table(test_zip, "test_zip.csv", sep=",", na="NA", row.names = FALSE)
Однако мне не удалось выяснить, как создать функцию петли, чтобы повторить этот процесс в несколько раз, особенно, удаление обработанного кадра данных после того, как обработка данных завершена. Вот моя пробная версия, но она все еще пропускает ключевую часть, и мне очень нужна ваша помощь. (Я также думал о do.call и lapply функций, но не придумали)
files=list.files(pattern='*.txt')
ldf <- list()
for (i in 1:length(files)) {
ldf[[i]] <- read.table(files[[i]], header=FALSE, sep='\t', stringsAsFactors = FALSE)
coordinates(ldf[[i]])=~lon+lat
proj4string(ldf[[i]])=CRS("+proj=longlat +datum=NAD83")
}
(missing parts are spatial join, removal of processed data frame, and repeating this process with new data)
Пожалуйста, помогите мне! Спасибо,
Это здорово! Он работает отлично. Я очень ценю ваш добрый ответ. –