首页 > 解决方案 > 如何将列表的一部分写入一个数据框中?

问题描述

我想用 150 个光栅对象的频率编写一个 df(部分答案在: Count freq of multiple raster objects in R

我已经创建了所有光栅文件的列表

spatial.tools::list.raster.files() 然后打电话

lapply(ls$raster,freq)

现在我有一个包含 150 个条目的列表,其中包含每个光栅文件的频率矩阵。

不过我只感兴趣$Band.1[,"count"])。对于列表的单个条目,我可以为计数创建一个 df

as.data.frame(all[[1]]$Band.1[,"count"])

我的问题是:如何一次$Band.1[,"count"]将列表中的所有 150 个写入单个 df ???

标签: rlistloopsr-raster

解决方案


我看你是新来的。如果您可以使您的问题可重现,其他人将更容易回答您的问题 - 查看这篇文章,了解如何制作一个很好的可重现示例。话虽如此,使用您的其他问题,这可能会为您提供所需的东西:

library(tidyverse)

list_of_results <- lapply(ls$raster,freq)

df_of_results <- 
  list_of_results %>%
  map_df(~ data.frame(.))

df_of_results$count

如果tidyverseandpurrr::map函数不适合您,您还可以执行以下操作:

results <- unlist(lapply(list_of_results, function(x) x[, c("count")]))

推荐阅读