如何将列表的一部分写入一个数据帧?

时间:2018-09-18 14:07:08

标签: r list loops r-raster

我想用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"])

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

1 个答案:

答案 0 :(得分:0)

我看到你是新来的。如果您可以使问题重现,则其他人将可以更轻松地回答您的问题-在how to make a great reproducible example上查看此信息。话虽这么说,使用另一个问题,这可能会为您带来所需的东西:

library(tidyverse)

list_of_results <- lapply(ls$raster,freq)

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

df_of_results$count

如果您不希望使用tidyversepurrr::map函数,您还可以执行以下操作:

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