Как l oop над значениями строки в фрейме данных с двумя столбцами в R? - PullRequest
0 голосов
/ 04 марта 2020

У меня есть фрейм данных, который выглядит следующим образом:

mydata <- data.frame(name = c("Rick", "Dan", "Michelle", "Ryan", "Gary"),
                     id = c (1:5))

Я хочу использовать l oop над строкой и извлечь переменные name и id для каждой. Это используется для экспорта файла GTiff. Важной частью является цикл по каждому значению. Ниже я показал, как я мог бы сделать это один за другим, используя функции paste для импорта имен в виде строк, где это необходимо. В этом случае у меня будет 5 геотифовых файлов, по одному на каждое имя.

head(mydata)

x <- paste(mydata[1, 1])
x
y <- paste0(x, ".asc")
y
z <- paste(mydata[1, 2])
z

species_raster <- raster(y)

m <- c(0, as.numeric(z), 0, as.numeric(z), 1, 1)
rclmat <- matrix(m, ncol = 3, byrow = TRUE)
rc <- reclassify(species_raster, rclmat)
plot(rc)
writeRaster(rc,
            filename = x,
            format = "GTiff",
            overwrite = TRUE)

1 Ответ

1 голос
/ 04 марта 2020

вы можете получить список ваших вставленных имен файлов с помощью этого

outputnames <- lapply(mydata[,1], paste0, ".asc")

#OR

outputnames <- lapply(mydata$name, paste0, ".asc")

Позже они могут быть использованы в другой функции применения или на них можно ссылаться в al oop, например,

for(i in mydata){
  writeRaster(rc,
              filename = i,
              format = "GTiff",
              overwrite = TRUE)
}

другая альтернатива ссылки на ваш фрейм данных в al oop следующая

for(i in 1:nrow(mydata)){
  filename <- paste(mydata$name[i], ".asc")
  print(filename)
  Idascharacter <- as.character(mydata$id[i])
  print(Idascharacter)
}
...