当前位置: 首页 > 编程笔记 >

R结合多个`data.frames`(`lapply`,`mapply`)

彭建业
2023-03-14
本文向大家介绍R结合多个`data.frames`(`lapply`,`mapply`),包括了R结合多个`data.frames`(`lapply`,`mapply`)的使用技巧和注意事项,需要的朋友参考一下

示例

在本练习中,我们将生成四个Bootstrap线性回归模型,并将这些模型的摘要合并为一个数据框。

library(broom)

#* Create the bootstrap data sets
BootData <- lapply(1:4,
                   function(i) mtcars[sample(1:nrow(mtcars),
                                             size = nrow(mtcars),
                                             replace = TRUE), ])

#* Fit the models
Models <- lapply(BootData,
                 function(BD) lm(mpg ~ qsec + wt + factor(am),
                                 data = BD))

#* Tidy the output into a data.frame
Tidied <- lapply(Models,
                 tidy)

#* Give each element in the Tidied list a name
Tidied <- setNames(Tidied, paste0("Boot", seq_along(Tidied)))

此时,我们可以采用两种方法将名称插入到data.frame中。

#* Insert the element name into the summary with `lapply`
#* Requires passing the names attribute to `lapply` and referencing `Tidied` within
#* the applied function.
Described_lapply <- 
 lapply(names(Tidied),
        function(nm) cbind(nm, Tidied[[nm]]))

Combined_lapply <- do.call("rbind", Described_lapply)

#* Insert the element name into the summary with `mapply`
#* Allows us to pass the names and the elements as separate arguments.
Described_mapply <- 
 mapply(
  function(nm, dframe) cbind(nm, dframe),
  names(Tidied),
  Tidied,
  SIMPLIFY = FALSE)

Combined_mapply <- do.call("rbind", Described_mapply)

如果您是magrittr样式管道的爱好者,则可以在一个链中完成整个任务(尽管如果需要任何中间对象(例如模型对象本身),这样做可能并不明智):

library(magrittr)
library(broom)
Combined <- lapply(1:4,
                   function(i) mtcars[sample(1:nrow(mtcars),
                                             size = nrow(mtcars),
                                             replace = TRUE), ]) %>%
 lapply(function(BD) lm( mpg ~ qsec + wt + factor(am), data = BD)) %>%
 lapply(tidy) %>%
 setNames(paste0("Boot", seq_along(.))) %>%
 mapply(function(nm, dframe) cbind(nm, dframe),
        nm = names(.),
        dframe = .,
        SIMPLIFY = FALSE) %>%
 do.call("rbind", .)
           

 类似资料:
  • 我有索引,其中每个文档都有这样的结构: 我需要计算每个演员对应的电影数量(演员可以在actor_1_name、actor_2_name或actor_3_name字段中) 这3个字段的映射是: 有没有一种方法,我可以聚合的结果,可以结合所有3个演员领域的条款,并给出一个单一的聚合。 目前,我正在为每个actor字段创建单独的聚合,并通过我的JAVA代码将这些不同的聚合合并成一个。 通过创建不同的聚合

  • 我想在多个data.tables(或data.frames)中执行相同的操作。例如,我想在所有data.tables中的相同规则上创建相同的变量条件。 列表.df 我的(坏的)试探性的: 很明显,不能像我现在所做的那样创建这个新变量,因为我会收到一条错误消息“Object not found”。有没有关于如何修复我的坏代码的线索?我有一种感觉可以帮助我,但我不知道如何帮助我。

  • 问题内容: 情况: 用户想使用Youtube的JSON API在JQuery网站中导入Youtube播放列表。 问题: Youtube仅返回前50个条目,但是播放列表的长度可能超过100个条目(长度由JSON响应中的“ totalItems”给出)。所有条目都需要合并为1个对象,最后需要将其推入到输出函数中。 条目1-50:http : //gdata.youtube.com/feeds/api/

  • 问题内容: 我想将多个csv文件合并为一个df。 它们都是这种通用格式,带有两个索引列: 等等… 合并的df为: 我正在尝试此代码: 但我收到此错误: 问题答案: 我认为你需要,而不是:

  • 本文向大家介绍MongoDB聚合分组多个结果,包括了MongoDB聚合分组多个结果的使用技巧和注意事项,需要的朋友参考一下 要聚合多个结果,请在MongoDB中使用$group。让我们创建一个包含文档的集合- 在find()方法的帮助下显示集合中的所有文档- 这将产生以下输出- 以下是汇总组多个结果的查询- 这将产生以下输出-

  • 问题内容: 我正在使用JPA 2.0 /hibernate验证来验证我的模型。我现在遇到一种情况,必须验证两个字段的组合: 该模型是无效的,如果都和都null和其他有效。 如何使用JPA 2.0 / Hibernate执行这种验证?使用简单的注释,两个吸气剂都必须为非null才能通过验证。 问题答案: 对于多属性验证,应使用类级别的约束。摘自 Bean Validation Sneak Peek第