Простите, если это дубликат, и из-за отсутствия воспроизводимости мне пришлось бы связать вам файлы.
Я пытаюсь сделать следующее:
У меня есть фрейм данных с координатами и именами, скажем,
df <- tribble(
~Species, ~lat, ~lon,
"a",42.92991, 11.875801,
"b",42.92991, 11.875801,
"c",43.91278, 3.513611,
"d",43.60851, 3.871755,
"e",39.24373, 9.120478
)
У меня также есть папка с tif
растрами, например
files <- list.files(path="~/world/", pattern="*.tif$", full.name=TRUE, all.files=TRUE)
Теперь для каждой итерации я ' я хотел бы:
- создать новый столбец во фрейме данных с именем файла
- вставить в этот столбец извлеченное значение для соответствующих
lat
и lon
Я пробовал использовать этот for
l oop, и хотя на бумаге он выглядит нормально, я не понимаю, почему он выводит funvar
только последний результат. Мне не нравится, что он перезаписывает результат вместо его добавления.
Если я использую аналогичный l oop с изменяемыми и более простыми объектами, он добавляет их, поэтому я не уверен, в чем может быть проблема
for(i in files){
fraster<- raster(i)
fname<-gsub(".*//|[.].*", "", i)
funvar<-dplyr::mutate(fundata, !!fname:= raster::extract(fraster, coordinates(data.frame(lat,lon))))
}
Спасибо!