如何编写一个函数来打开文件名与数据框中的像元值匹配的栅格?
How to write a function that opens a raster whose filename matches with cell value in a dataframe?
我打算使用 R 编写一段代码来查看名为 df 的数据框,检查 IMG 列中的单元格值,并从名称与 IMG 匹配的另一个文件夹(加上 jpg 扩展名)打开一个 .jpg 栅格).
最终我希望该函数还可以计算该图像中黑色像素的数量,并将结果保存在一个新的数据帧中(IMG/filename 包含在一列中,黑色像素的数量在另一个),或者到新列和相应行中的旧数据框 df。
我什至不知道如何开始,因此我什至还没有远程运行的代码。我知道如何编写非常基本的循环函数,我相信如果有人指导我正确的方向,我将能够完成代码...
这是我要从中检查文件名的数据框。总共有 300 行,因此有 300 张图像,所以虽然它也可以手动完成,但这会花费很多时间,我很想知道如何通过代码来完成。
> head(df)
plot IMG
1 Kure-0-3 2927
51 Kure-1-3 2924
149 Hope-0-1 2757
170 Hope-1-2 2758
217 Hope-1-1 2756
290 Kure-1-1 2747
// 编辑澄清:我希望函数检查 IMG 列中的单元格值,例如 2927,并打开具有相同文件名的光栅(来自另一个文件夹),在本例中为 2927.jpg .在计算了它有多少个黑色像素并将结果保存在同一个或另一个数据帧中之后,我想去下一行,看到单元格值为 2924,打开栅格 2924.jpg,进行相同的计算,然后很快。但是,现在如果有人可以帮助我如何做第一部分就足够了:)
提前感谢您的帮助。非常感谢任何帮助,即使是 "check this question here" 或 "this page describes some stuff that might be useful to you"。
// Here is one example picture
假设 'black pixels' 是指缺失值,下面的代码将满足您的需要。
library(raster)
data_key <- data.frame(IMG = 2900:3000)
data_key$filepath <- paste0(data_key$IMG, '.jpg')
setwd('directory with the rasters in it')
my_rasters <- lapply(data_key$filepath, raster)
Black_pixels <- lapply(my_rasters, function(x){length(which(is.na(x[,])))})
data_key$black_pixels <- Black_pixels
我打算使用 R 编写一段代码来查看名为 df 的数据框,检查 IMG 列中的单元格值,并从名称与 IMG 匹配的另一个文件夹(加上 jpg 扩展名)打开一个 .jpg 栅格).
最终我希望该函数还可以计算该图像中黑色像素的数量,并将结果保存在一个新的数据帧中(IMG/filename 包含在一列中,黑色像素的数量在另一个),或者到新列和相应行中的旧数据框 df。
我什至不知道如何开始,因此我什至还没有远程运行的代码。我知道如何编写非常基本的循环函数,我相信如果有人指导我正确的方向,我将能够完成代码...
这是我要从中检查文件名的数据框。总共有 300 行,因此有 300 张图像,所以虽然它也可以手动完成,但这会花费很多时间,我很想知道如何通过代码来完成。
> head(df)
plot IMG
1 Kure-0-3 2927
51 Kure-1-3 2924
149 Hope-0-1 2757
170 Hope-1-2 2758
217 Hope-1-1 2756
290 Kure-1-1 2747
// 编辑澄清:我希望函数检查 IMG 列中的单元格值,例如 2927,并打开具有相同文件名的光栅(来自另一个文件夹),在本例中为 2927.jpg .在计算了它有多少个黑色像素并将结果保存在同一个或另一个数据帧中之后,我想去下一行,看到单元格值为 2924,打开栅格 2924.jpg,进行相同的计算,然后很快。但是,现在如果有人可以帮助我如何做第一部分就足够了:)
提前感谢您的帮助。非常感谢任何帮助,即使是 "check this question here" 或 "this page describes some stuff that might be useful to you"。
// Here is one example picture
假设 'black pixels' 是指缺失值,下面的代码将满足您的需要。
library(raster)
data_key <- data.frame(IMG = 2900:3000)
data_key$filepath <- paste0(data_key$IMG, '.jpg')
setwd('directory with the rasters in it')
my_rasters <- lapply(data_key$filepath, raster)
Black_pixels <- lapply(my_rasters, function(x){length(which(is.na(x[,])))})
data_key$black_pixels <- Black_pixels