基于数据帧从R直接导出图像文件

时间:2017-03-11 04:57:29

标签: r image raster

我在R中有以下数据框:

df <- data.frame(a = c(0, 0, 1, 1),
                 b = c(0, 1, 0, 1),
                 col = c("red", "green", "green", "yellow"))

我感兴趣的是导出一个光栅图像文件(png,tif等),它将为数据框中的每个条目包含一个像素,并使用适当的颜色。对于上面的示例,将有一个2 x 2的图像文件,如下所示:

enter image description here

我觉得raster包可能有用,但据我所知它只能导出地理空间栅格图像类型而不是普通图像。

1 个答案:

答案 0 :(得分:0)

这可以使用tiff包:

library(tiff)

df <- data.frame(a = c(0, 0, 1, 1),
                 b = c(0, 1, 0, 1),
                 col = c("red", "green", "green", "yellow"))

mina <- min(df$a)
minb <- min(df$b)
maxa <- max(df$a)
maxb <- max(df$b)

colarray <- array(data = NA,
                  dim = c(maxb - minb + 1,
                          maxa - mina + 1,
                          3))

for (k in 1:nrow(df))
{
  colarray[df[k, 2] - minb + 1,
           df[k, 1] - mina + 1,
           ] <- col2rgb(df[k, 3]) / 255
}
writeTIFF(colarray, "res.tif", compression = "LZW")

它可能更简洁一点,但对于x&amp; y坐标不一定是0到n的情况,这种方法效果更好。

这将使用png等相关包进行相同的操作。