如何调用返回 data.table 中多行和多列的函数?

2023-11-22

我想调用 data.table 中的一个函数来计算一组汇总统计信息,如下所示:

summ.stats <- function(vec) {
    list(
         Min = min(vec),
         Mean = mean(vec),
         S.D. = sd(vec),
         Median = median(vec),
         Max = max(vec))
}

我想把它称为j of a data.table:

DT <- data.table(a=c(1,2,3,1,2,3),b=c(1,4,3,2,1,4),c=c(2,3,4,5,2,1))

DT[, summ.stats(b), by=a]

这很好,我得到:

   a Min Mean      S.D. Median Max
1: 1   1  1.5 0.7071068    1.5   2
2: 2   1  2.5 2.1213203    2.5   4
3: 3   3  3.5 0.7071068    3.5   4

但我有兴趣将多个变量传递给 summ.stats。例如:

DT[, summ.stats(b, c), by=a]

我想要得到类似的东西:

   a Var Min Mean      S.D. Median Max
1: 1   b   1  1.5 0.7071068    1.5   2
2: 2   b   1  2.5 2.1213203    2.5   4
3: 3   b   3  3.5 0.7071068    3.5   4
4: 1   c   2  3.5 2.1213203    3.5   5
5: 2   c   2  2.5 0.7071068    2.5   3
6: 3   c   1  2.5 2.1213203    2.5   4

做这个的最好方式是什么?


或者,您可以按如下方式修改您的函数:

summ.stats <- function(vec) {
    list(
        Var = names(vec),
         Min = sapply(vec, min),
         Mean = sapply(vec, mean),
         S.D. = sapply(vec, sd),
         Median = sapply(vec, median),
         Max = sapply(vec, max))
}

DT[, summ.stats(.SD), by=a] # no need for as.list(.SD) as Roger mentions
   a Var Min Mean      S.D. Median Max
1: 1   b   1  1.5 0.7071068    1.5   2
2: 1   c   2  3.5 2.1213203    3.5   5
3: 2   b   1  2.5 2.1213203    2.5   4
4: 2   c   2  2.5 0.7071068    2.5   3
5: 3   b   3  3.5 0.7071068    3.5   4
6: 3   c   1  2.5 2.1213203    2.5   4
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何调用返回 data.table 中多行和多列的函数? 的相关文章

  • R - 正则表达式错误(PCRE 版本)

    我正在尝试使用koRpus在 R 中在运行 RHEL6 的 Linux 服务器上进行词形还原 上周 当我安装了 MRO Microsoft R Open 3 2 3 时 下面的代码效果很好 library koRpus lw c danci
  • 可以明确声明包依赖项的版本吗?

    我倾向于对我编写的代码进行明确而不是隐含的描述 因此 在成功创建自己的包之后 我立即想到的下一件事是如何最好地确保代码的健壮性和可靠性 其中一部分与我的包所依赖的包有关 实际问题 在这方面 是否可以明确声明需要 期望哪个版本的包依赖项 我正
  • 如果“testthat”测试在“R”中失败,则打印自定义诊断信息

    I use a testthat单元测试来检查是否data frame函数返回的结果与我期望它返回的结果相同 如果测试失败 testthat打印一些诊断信息 例如 MyFunction df orig is not identical to
  • 如何生成向量的所有组合[重复]

    这个问题在这里已经有答案了 假设我有 3 个绿球 2 个橙球和 8 个黄球 我想订购它们 鉴于所有相同颜色的球都是相同的 如何生成所有可能的序列 在 R 中 使用gregmisc 我可以 balls lt c orange orange g
  • R从列表中提取数据框,列名中没有前缀

    我在列表中放置了一个数据框 然后 当尝试将其提取回来时 我得到了该数据帧的所有以列表键为前缀的列名称 有没有办法完全按照最初传递的方式提取数据帧 cols lt c column1 Column2 Column3 df1 lt data f
  • R 中的 NA 替换函数

    我正在尝试替换矩阵中的 NA mat 零 我在用着mat is na mat lt 0 当我有 18946 个变量的 94531 个观察值或更小的矩阵时 效果很好 但我在 22752 个变量的 112039 个观察值的矩阵上尝试它 R 显示
  • 将 JSON URL 转换为 R 数据帧

    我在将 JSON 文件 从 API 转换为 R 中的数据帧时遇到问题 例如 URL 我尝试了 S O 的一些不同建议 包括将json数据转换为R中的数据框 https stackoverflow com questions 28683769
  • 如何在 dataTable.js 中转置行和列

    我想在行而不是列中显示我的数据 转置 你可以在这里看到我的例子 var dataSet Tiger Nixon System Architect Edinburgh 5421 2011 04 25 320 800 Garrett Winte
  • 如何在不循环的情况下添加组ID?

    我有数据框 例如 productid ordernum p1 10 p2 20 p3 30 p4 5 p5 20 p6 8 我想添加另一列 称为 groupid 它将产品按顺序分组在一起 一旦 sum ordernum 达到 30 分配一个
  • dplyr,do(),从模型中提取参数而不丢失分组变量

    R 帮助中关于 do 的示例略有不同 by cyl lt group by mtcars cyl models lt by cyl gt do mod lm mpg disp data coefficients lt models gt d
  • 在另一个 Rmd 中运行选定的块

    我已经在源 Rmd 文件中运行了分析 并且希望仅使用few来自源的块 我已经看到了一些关于从源 Rmd 中提取所有块的答案来自另一个 Rmd 中的 Rmd 文件的源代码 https stackoverflow com questions 4
  • 将 sf voronoi 多边形裁剪到边界框时出错

    我正在尝试将 voronoi polygons 使用 sf package 创建 剪辑 到边界框 但它引发了我无法定义的错误 我对 R 的空间世界不太有经验 感谢所有帮助 样本数据 stations lt structure list ST
  • 比较 R 中的两个字符向量

    我有两个 ID 字符向量 我想比较这两个字符向量 特别是我对以下数字感兴趣 A和B各有多少个ID 有多少个ID在A中但不在B中 有多少个ID在B但不在A 我还想画维恩图 以下是一些可以尝试的基础知识 gt A c Dog Cat Mouse
  • SQL 连接两个没有关系的表

    我有具有相同结构的不同表 我想通过其中一列将它们连接起来 问题是他们不共享该专栏中的信息 Table 1 Type A Name Value Table 2 Type B Name Value 结果表 在单列中 nameFromA name
  • C# 问题:加载 .MDB 文件、对其进行更改并将更改保存回原始文件的最简单方法是什么?

    我正在进行的项目即将完成 我正在加载一个 MDB 文件 在 DataGrid 上显示内容 并尝试在 DataGrid 上获取这些更改并将它们保存回 MDB 文件中 我还将创建一个函数 允许我从一个 MDB 文件中获取表并将其保存到另一个 M
  • 为什么这些数字不相等?

    下面的代码显然是错误的 有什么问题 i lt 0 1 i lt i 0 05 i 1 0 15 if i 0 15 cat i equals 0 15 else cat i does not equal 0 15 i does not eq
  • 带 R 的多彩标题

    我想添加颜色某些词在我的图表标题中 我已经能够在这里找到一些先例 http blog revolutionanalytics com 2009 01 multicolor text in r html 具体来说 我希望用撇号括起来的文本 在
  • R:将 JSON 时间格式转换为 POSIX

    我有一个 JSON 字符串 并将其放入数据框中 我能够做到这一点 但我在使用 apply 函数之一将所有时间字符串转换为 POSIX 格式时遇到问题 See here https stackoverflow com questions 90
  • ggplot散点图中的图例问题

    我想使用 ggplot 创建显示方法比较数据的散点图 绘图应包含原始数据 理想线和带误差的拟合线 图例应显示理想线和拟合线的线型 线宽 线颜色 我可以获得大部分我想要的东西 但是图例存在以下问题 图例显示每种线型有 2 条线 为什么 如何解
  • 如何匹配 R 中的所有匹配项?

    我有 1000 个名字的列表 说A 我还有另外 5 个名字的清单 说B 我想找出这5个名字出现在1000个号码列表中的第几行 例如 Amy 在 A 中可以出现 25 次 B 里有艾米 我想知道 Amy 出现在 A 中的哪些行 我以前使用过

随机推荐

  • 使 bash 中的命令超时,避免不必要的延迟

    这个答案 to 命令行命令在一定时间后自动终止命令 提出了一种 1 行方法来使 bash 命令行中长时间运行的命令超时 path to slow command with options sleep 5 kill 但给定的 长时间运行 命令
  • Django 表命名约定。我可以改变它的行为吗?

    当 Django 创建表时 它会为它们提供 app class 形式的名称 我正在为 Django 安装改造一个不同的 但内容基本相似 数据库 我的表名称没有以 app 开头 我可以相应地重新创建我的数据库及其表 但我想看看 Django
  • 页面退出时弹出框

    我想做的是在页面退出或导航离开时创建一个弹出框 现在我有 我有两个问题 仅当您实际离开页面 刷新 新 URL 等时 它才会显示该框 如果您退出选项卡或浏览器 则不会弹出该框 无论您按哪个按钮 它只会将您发送到
  • 在关联文件中更改新版本的版本号(文档)

    我很想知道你们是如何处理的修改版本号对于新版本问题 如何处理关联文件 例如手册页等 中的版本号 该软件是使用 gnu 工具链构建的 因此 autoconf automake 等可用并用于应用程序的版本号 这样信息就可以被重用 git 被用作
  • Rails 中处理无效表单提交的正确方法

    我是 Rails 新手 不确定我是否同意我在一些教程中完成的工作方式 该问题与如何处理无效的表单提交有关 标准的做事方式似乎是 class ThingsController lt ApplicationController POST thi
  • 如何从 bash shell 脚本中的一行中提取单词[重复]

    这个问题在这里已经有答案了 我想从 bash 脚本中的句子中提取一个单词 它使用逗号和空格作为分隔符 ex date crossed 122 name foo userid 234567 sessionid 2233445axdfg5209
  • AFNetworking 2.0 POST 问题,Cocoa 错误 3840(JSON 文本未以数组开头...)

    我正在尝试在本地服务器上调用 api php 使用 MAMP 正在调用服务器端 api php 但 php 代码中的 POST 内容包含以下错误 Error Domain NSCocoaErrorDomain Code 3840 The o
  • 实现自定义 MVC 基本视图页面

    我正在尝试实现 MVC 自定义基本视图页面以 覆盖 User财产种类 这将使我的CustomPrincipal在任何视图中均可访问的类型 在网上搜索后 我发现Phil Haack 关于实现自定义基本视图页面的说明 我完全按照说明进行操作 但
  • Unicode字符插入数据库后变成问号

    当我将一些用 Unicode 编写的文本插入数据库时 它们变成了问号 数据库编码设置为UTF 8 还有什么可能是不正确的 当我检查 phpMyAdmin 时 只插入了问号 这是我用于连接数据库的代码 define DB HOST local
  • 如何在 Python 中创建和导入自定义模块

    如何将以下函数保存在一个 python 文件中 然后在另一个文件中使用它 文件A中的函数 def basic x print x B文件中的声明 basic some string A 创建一个包含所有模块的文件夹 例如 让我们使用 MyM
  • HTML.fromHtml 换行符消失

    我从 EditText 框中获取 Spanned Text 并使用 HTML toHtml 将其转换为 HTML 标记字符串 这很好用 我已经验证该字符串是正确的并且包含 br 在适当的位置 但是 当我需要使用 HTML fromHtml
  • 如何将 sqlite3 模块与 Electron 一起使用?

    我想使用开发桌面应用程序electron使用通过 npm 使用命令安装的 sqlite3 包 npm install save sqlite3 但它在电子浏览器控制台中给出以下错误 Uncaught Error Cannot find mo
  • 选择 .Net 的图表库 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我有一位客户需要将图表应用程序 很久以前是用 MFC 开发的 转换为 C 该应用程序显示大型网络 大量图形元素 并允许用户通过图形用户界面编辑 操作数据 我决定最好使用一个库 而不是
  • 如何将
    的箭头与 的内容垂直对齐

    我正在尝试垂直对齐附带的箭头
  • 改进猫鼬验证错误处理

    我有以下具有所需验证的架构 var mongoose require mongoose var validator require validator var userSchema new mongoose Schema email typ
  • Sharepoint CMS 与 UmbracoCMS

    我在一家大型地方政府组织工作 该组织即将开始使用 SharePoint 将我们老化的内部网替换为一个能歌善舞的协作网站 Intranet 的重点将是用 SharePoint 安装替换散布在整个组织中的随机文件 内容页面和文档 这将神奇地使所
  • 更改整个应用程序中的按钮样式

    我正在尝试将应用程序中按钮的所有 TextColor 更改为白色 并尝试将其设为粗体 但这并没有发生 我正在覆盖the android Widget Button我正在开发 Jelly Bean 4 1 2 我究竟做错了什么 清单中的主题定
  • 直接从 AlarmManager 唤醒服务

    In the https github com commonsguy cwac wakeful演示中 调用 OnAlarmReceiver 广播接收器 的 onReceive 方法来响应警报 onReceive 方法启动服务 使用了两种 I
  • 如何在 LINQ 中使用 whereif

    大家好 有人可以帮助我如何在 LINQ 中最好地使用 whereif IQueryable
  • 如何调用返回 data.table 中多行和多列的函数?

    我想调用 data table 中的一个函数来计算一组汇总统计信息 如下所示 summ stats lt function vec list Min min vec Mean mean vec S D sd vec Median media