do.call(rbind, ...) 是否有更高阶的替代品?

2024-07-04

考虑以下数据框A

A <- data.frame(ID = c(1,1,1,2,2,2), num = c(6,2,8,3,3,1))

With A, 我想分开ID,然后计算差值num。可以(几乎)获得所需的结果

do.call(rbind, Map(function(x) { x$new <- c(diff(x$num), NA); x }, 
                   split(A, A$ID)))
#     ID num new
# 1.1  1   6  -4
# 1.2  1   2   6
# 1.3  1   8  NA
# 2.4  2   3   0
# 2.5  2   3  -2
# 2.6  2   1  NA

这不是什么秘密do.call(rbind, ...)在 R 用户中广泛流行。但随着高阶函数式编程的功能?Map page (Reduce, Filter等),我想可能有一些我不知道的东西可以替代do.call(rbind, ...)这也将重置该过程中的行名称。我已经尝试过以下方法。

> Reduce(function(x) { x$new <- c(diff(x$num), NA); x }, Map, split(A, A$ID))
# Error in f(init, x[[i]]) : unused argument (x[[i]])
> Reduce(function(x) { x$new <- c(diff(x$num), NA); x }, split(A, A$ID))
# Error in f(init, x[[i]]) : unused argument (x[[i]])
> Reduce(Map(function(x) { x$new <- c(diff(x$num), NA); x }, split(A, A$ID)))
# Error in Reduce(Map(function(x) { : 
#   argument "x" is missing, with no default

我想要的确切结果是通过以下方式获得的

> M <- do.call(rbind, Map(function(x) { x$new <- c(diff(x$num), NA); x }, 
                          split(A, A$ID)))
> rownames(M) <- NULL
> M
#   ID num new
# 1  1   6  -4
# 2  1   2   6
# 3  1   8  NA
# 4  2   3   0
# 5  2   3  -2
# 6  2   1  NA

有没有高阶函数可以替代do.call(rbind, ...)并纳入rownames(x) <- NULL同时?

注意:我真的在寻找?Map相关答案,但我对其他人开放。


你可以看看rbindlist来自“数据.表”:

library(data.table)

rbindlist(Map(function(x) { 
  x$new <- c(diff(x$num), NA)
  x}, split(A, A$ID)))
#    ID num new
# 1:  1   6  -4
# 2:  1   2   6
# 3:  1   8  NA
# 4:  2   3   0
# 5:  2   3  -2
# 6:  2   1  NA

然而,纯粹的“data.table”方法更加直接:

DT <- as.data.table(A)

DT[, new := c(diff(num), NA), by = ID][]
#    ID num new
# 1:  1   6  -4
# 2:  1   2   6
# 3:  1   8  NA
# 4:  2   3   0
# 5:  2   3  -2
# 6:  2   1  NA
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

do.call(rbind, ...) 是否有更高阶的替代品? 的相关文章

  • RStudio 闪亮列表,通过检查数据表中的行

    我想要一个与此类似的工作示例 https demo shinyapps io 029 row selection https demo shinyapps io 029 row selection 我在运行的闪亮服务器中尝试了该示例Shin
  • 旋转和调整符号ggplot

    我正在尝试在 ggplot geom point 中绘制一个图 并且我能够绘制它 但我想根据某些变量来操纵特定符号的外观 我想按 data frame 定义的角度旋转符号 pch 22 Pch 22 看起来像一个矩形 另外 我想根据数据框中
  • R 中是否有具有超过 3 个参数预测变量的 loess 实现或达到类似效果的技巧?

    召集所有专家局部回归 and or R 我遇到了标准的限制loess函数于R并希望您有一些建议 目前的实施情况仅支持 1 4 个预测器 让我列出我们的应用场景来说明为什么一旦我们要使用这很容易成为问题全局拟合参数协变量 本质上 我们有一个空
  • grid 在控制台中运行时找到字体,但在渲染 Rmd 时找不到字体

    当我从控制台下面的最小 Rmarkdown 运行该块时 会显示正确的字体 但是 当我尝试将 Rmarkdown 文档编译为 pdf 时 出现错误 font family Pacifico not found in PostScript fo
  • 使用 jekyll、rmarkdown 和 github 写博客:如何显示图像

    我尝试使用三重奏 jekyll rmarkdown 和 github 制作一个博客 如下所示 http yihui name knitr jekyll http yihui name knitr jekyll 我的所有 Rmd 都在 sou
  • 如何在R闪亮中使用plotly

    我正在尝试为使用闪亮生成的输出添加图表 我收到图形生成错误 有人可以看一下并提供帮助吗 条形图参数是根据计算生成的基于计算的输出 server output graph lt renderPlotly plotly x c as numer
  • 如何在R中将时间(mm:ss)转换为小数形式

    我已使用 RStudio 将 csv 文件导入到 R 其中我尝试根据每场比赛的分钟数绘制每场比赛的得分 然而 每场比赛的分钟数采用 mm ss 格式 我很难找到如何将其转换为十进制形式 请帮忙 鉴于您从字符向量开始 这相对容易 minPer
  • 按组在数据帧上运行自定义函数

    用于循环数据框中的组的自定义函数 这是一些示例数据 set seed 42 tm lt as numeric c 1 2 3 3 2 1 2 3 1 1 d lt as numeric sample 0 2 size 10 replace
  • R:按比例缩放 ggplot2、点阵或基本 R 图的函数

    在 R 中 我总是觉得很烦人的是 基本 R lattice 和 ggplot2 绘图都使用文本和绘图符号大小的绝对点大小 这意味着 如果您增加绘图窗口的大小以获取填充页面的图表 windows width 5 height 5 qplot
  • gc() 和 rm() 有什么区别

    我定期使用调用来清理 R 中的内存rm list ls 我需要调用垃圾收集器吗gc 在那之后 这2个函数有什么区别 做gc call rm 对于某些变量 首先 需要注意的是 两者有很大不同gc不删除any您仍在使用的变量 它只会为您不再有权
  • 在 data.table 中添加缺失值的行

    我的问题在某种程度上与在 data frame 中添加缺失值行的最快方法 https stackoverflow com questions 10438969 fastest way to add rows for missing valu
  • 有pmin和pmax各取na.rm,为什么没有psum?

    看来 R 可能缺少一个明显的简单函数 psum 它是否以不同的名称存在 或者位于某个包中 x c 1 3 NA 5 y c 2 NA 4 1 min x y na rm TRUE ok 1 1 max x y na rm TRUE ok 1
  • 在 ggplot 中为 R 中的分类变量 x 轴绘制垂直线时出现问题

    我有下表 我想使用每个县的 st date wk 列绘制一条垂直线 请参阅下面的代码 但它不会使用 st date wk 列绘制垂直线 无法弄清楚我在这里做错了什么 任何帮助表示赞赏 Thanks dfx1 YEAR Week Area a
  • 停止 lapply 从打印到控制台

    当我使用lapply并打印到控制台 它打印出不需要的内容 i NULL虽然我希望将预期的消息打印到控制台 我试过了suppressWarnings and suppressMessages但这些并不能消除不受欢迎的罪犯 我搜索了lapply
  • 如何使用插入符号和 glmnet 应用套索逻辑回归?

    我试图重复以下代码行 x mat lt as matrix train df predictors y class lt train df Response cv lasso fit lt cv glmnet x x mat y y cla
  • 计算 r 中的相对 RMSE

    为了获得预测模型和真实值的相对 RMSE 我使用了代码 ratio lt prediction1 ISEtrain rRMSE1 lt sqrt mean 1 ratio 2 但我失败了 输出为 1 Inf 我的代码有什么问题吗 谢谢 你正
  • 正则表达式在日期中添加连字符

    在 R 中 我有一个如下所示的字符串 x lt c 20130603 00 00 03 102 20130703 00 01 03 103 20130804 00 03 03 104 我想通过使用一个单一的看起来像下面gsub命令 而不是使
  • 查找 R 中已知中心点的半径范围内的纬度/经度

    我有一个具有已知纬度和经度的已知点 中心 并且我在 df 中有一些坐标 以纬度 经度为单位 我想查看哪些坐标在距中心点 5 公里或更小的半径内 Centre mylon lt c 2 106472 mylat lt c 57 14455 坐
  • R中逻辑回归的分类表

    我有一个由二分因变量组成的数据集 Y 和 12 个自变量 X1 to X12 存储在 csv 文件中 这是数据的前 5 行 Y X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 0 9 3 86 111 126
  • 使用 insertUI 方法创建不同的闪亮小部件

    我有下面的闪亮应用程序 用户可以在数据框中选择一个或多个列名称 name lt c John Jack Bill value1 lt c 2 4 6 add lt c SDF GHK FGH value2 lt c 3 4 5 dt lt

随机推荐

  • AWS SQS 触发器 Step Functions

    快速问题 发送 SQS 消息后是否可以触发 Step Function 的执行 如果可以 您如何将其指定到 cloudformation yaml 文件中 提前致谢 首先要考虑的是 你really需要使用 SQS 启动 Step Funct
  • Qt组件的边框颜色

    我想更改 QFrame 组件的边框颜色 还尝试使用样式表 但在运行时没有效果 在我的项目中 有各种对话框 UI 它们基本上都是 QFrame 我想更改所选对话框的边框颜色 即 QFrame 边框颜色 QT 中有没有解决这个问题的方法 如下所
  • SUM 的 LINQ 组

    给出以下查询 Dim Query From c In DB Crt Where c Member Locked False And c Member Verified True And c Ct gt 0 Order By c Ct Asc
  • 为什么有些网站不允许更改字体大小?

    我几乎总是使用比默认字体大得多的字体浏览网页 使它更容易阅读 但有时我注意到有些网站不允许放大字体 至少在 Chrome 上是这样 比如这个网站 http en support wordpress com domains map exist
  • 如何使用 Android Volley 显示/请求 JSON 对象?

    我在 Android Studio 中遇到如何请求 JSON 对象的问题 我的 Logcat 只能打印 String onResponse 而不能打印 JSONObject 值 我在 AccessActivity java 内的 try 行
  • 将全局变量传递给函数有问题吗?

    考虑以下函数声明 int abmeld char strsend 这是这样称呼的 abmeld str where str是在程序文件开头 包含之后 声明和初始化的全局变量 如下所示 char str 300 现在我已经知道这是不必要的代码
  • 将 PHP 转换为数组并循环

    我正在为我们的空手道学校开发一个应用程序 希望从数据库中获取技术名称 将它们以随机顺序存储在一个数组中 并且能够单击一个按钮一次在整个数组中移动 我以几种不同的方式考虑过这个问题 包括从数据库中随机进行 这非常简单 但它多次提取相同的技术
  • Scala 防止混合的方法

    我想创造以下特征 trait IntSet A extends Traversable A self Product gt def foreach U f A gt U Unit case class AProduct a List Int
  • 使用 Matplotlib 创建箱线图

    我正在使用 python 3 和 jupyter 笔记本 我有一个 pandas 数据框 其结构如下 location price Apr 25 ASHEVILLE 15 0 Apr 25 ASHEVILLE 45 0 Apr 25 ASH
  • 时钟()精度

    我看过很多关于使用clock 函数来确定程序中经过的时间量的帖子 代码如下 start time clock code to be timed end time clock elapsed time end time start time
  • 如何在 jasmine 中模拟 $scope.variables

    我有以下测试用例 CompanyCtrlSpec js describe ViewCompanyCtrl function var rootScope scope controller q beforeEach angular mock m
  • jquery 解决方案从静态 html 页面发布到另一个站点

    需要将数据从静态 html 页面发布到托管在另一个域上的另一个页面 通常 我会使用 post 方法创建一个包含表单的 iframe 其操作定向到该网页 最后提交该表单 复杂之处在于我要从静态 html 页面收集数据并在 iframe 内创建
  • 将 3 个具有透明度的图像组合在一起

    我正在做这个项目 我想将三张图像合并为一张 到目前为止 有效的方法是使每个图像 jpg 透明 但将它们合并成新的 png 图像后 透明度就消失了 这是代码 function CreateMyCoolOutfitBaby Outfitwidt
  • 从 try catch finally 块中返回是不好的做法吗?

    所以今天早上我遇到了一些代码 如下所示 try x SomeThingDangerous return x catch Exception ex throw new DangerousException ex finally CleanUp
  • php curl 获取 html 和 js 渲染

    php curl 只获取html页面的源代码 不执行js脚本 我需要我的网站获取已执行所有 JavaScript 的源代码 我使用ajax 但无法在页面中添加更多js 因为当我加载另一个页面时脚本会保留 我找到了 SpiderMonkey
  • SQLCMD :r 其中路径是变量

    SQLCMD命令是否执行 r支持非常量文字路径吗 例如 setvar path1 script sql r path1 SQL01260 A fatal parser error occurred r path1 SQL01260 A fa
  • 是否可以在所有平台上确定性地从 jpeg 文件中读取像素?

    我遇到一个问题 我发现 JPEG 图像中的像素可能会略有不同 具体取决于我用来读取它们的计算机 我主要是一名Python程序员 我更喜欢使用opencv来读取我的图像 但我不反对使用PIL做一些事情或用C读取图像 根据这篇文章JPEG 图像
  • 使用 jQuery 和 Bootstrap 可重复使用的下拉菜单

    我正在尝试使用最新的 jQuery 3 6 1 和 Bootstrap 5 2 3 构建可重用的下拉菜单 但事实证明这很困难 我需要使用单击的按钮上指定的数据属性的值动态更新下拉列表的链接 我正在看优秀的solution https sta
  • OpenMP 运行线程但继续 main

    我正在尝试使用 OpenMP 进行线程处理 因为它是跨平台的 但是我不知道如何使并行后的代码在循环运行时继续运行 它基本上只是并行执行第一个循环 但永远不会执行第二个非并行循环 int main pragma omp parallel wh
  • do.call(rbind, ...) 是否有更高阶的替代品?

    考虑以下数据框A A lt data frame ID c 1 1 1 2 2 2 num c 6 2 8 3 3 1 With A 我想分开ID 然后计算差值num 可以 几乎 获得所需的结果 do call rbind Map func