data.table:lapply 具有多列输出的函数

2023-12-25

我正在使用一个函数smean.cl.normal来自 Hmisc 包,它返回一个具有 3 个值的向量:均值以及 CI 下限和上限。当我在一个data.table对于 2 个组,我获得 2 列和 6 行。有没有办法获得与 2 个组相对应的两行和每个函数输出的单独列(即均值和 CI)的结果?

require(Hmisc)
require(data.table)

dt = data.table(x = rnorm(100),
                gr = rep(c('A', 'B'), each = 50))

dt[, lapply(.SD, smean.cl.normal), by = gr, .SDcols = "x"]

输出:

   gr           x
1:  A -0.07916335
2:  A -0.33656667
3:  A  0.17823998
4:  B -0.02745333
5:  B -0.32950607
6:  B  0.27459941

所需的输出:

   gr        Mean         Lower         Upper
1:  A -0.07916335   -0.33656667    0.17823998
2:  B -0.02745333   -0.32950607    0.27459941

The j论证中DT[i,j,by]需要一个列表,所以使用as.list:

dt[, 
  Reduce(c, lapply(.SD, function(x) as.list(smean.cl.normal(x))))
, by = gr, .SDcols = "x"]

#    gr       Mean      Lower     Upper
# 1:  A  0.1032966 -0.1899466 0.3965398
# 2:  B -0.1437617 -0.4261330 0.1386096

c(L1, L2, L3)是列表的组合方式,所以Reduce(c, List_o_Lists)如果你的.SDcols包含的不仅仅是x。我猜do.call(c, List_o_Lists)也应该有效。


Comments

由于几个原因,这是相当低效的。打开verbose=TRUE看到 data.table 不喜欢获取命名列表j:

j 的结果是一个命名列表。为每个组一遍又一遍地创建相同的名称是非常低效的。当 j=list(...) 时,为了提高效率,在分组完成后会检测、删除并放回任何名称。例如,使用 j=transform() 可以防止加速(考虑更改为 :=)。此消息将来可能会升级为警告。

此外,您还错过了针对群体优化的版本mean以及其他可能可用于构建结果的函数。不过,这对于您的用例来说可能不是什么大问题。


当您仅将此应用于单个值列时,只需:

dt[, as.list(smean.cl.normal(x)), by = gr]

就足够了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

data.table:lapply 具有多列输出的函数 的相关文章

  • 泛化 R %in% 运算符以匹配元组

    前几天我花了一段时间寻找一种方法来检查行向量是否包含在 R 中的某些行向量集中 基本上 我想概括 in 运算符来匹配元组而不是向量中的每个条目 例如 我想要 row vec c A 3 row vec 1 A 3 data set rbin
  • 如何在R中用随机数填充矩阵?

    expand grid i rexp 5 rate 0 1 它只创建一列 但有什么方法可以轻松地将其乘以 5 列吗 我的意思是 matlab 的做事方式 比如rand exp 0 1 10 20 创建一个指数分布随机数的矩阵 平均值为 0
  • R 中具有重叠样本的分割向量

    假设我有一个包含 1000 个值的向量 我想将此向量 拆分 分区 分组 为多个向量 每个向量包含 200 个值 并且它们之间有 100 个值的重叠 E g vec seq 1 1000 splitWithOverlap vec 200 10
  • 使用 R 将多个数据帧写入 .csv 文件

    我使用 lapply 将函数应用于多个数据框 data cleaned lt lapply data list shooter cleaning 然后根据主题编号 例如 100 标记列表中每个结果数据帧 names data cleaned
  • 传说在北卡罗来纳州地理地图上消失?

    我正在使用 R 编程语言 使用北卡罗来纳州的内置地图 我生成了 3 个随机变量 收入 孩子数量 体重 然后为此数据创建了地图 使用 传单 库 通过循环 library sf library mapview library leaflet l
  • 在 R 中执行 read.csv 时未读取所有行

    这是输入文件 http www yourfilelink com get php fid 841283 http www yourfilelink com get php fid 841283 我执行了 options stringsAsF
  • 如果包已经加载,那么在函数中需要包会有什么影响?

    加入有没有什么不良影响library require函数内的语句会被频繁调用吗 所用的时间似乎可以忽略不计 但我每隔几分钟调用该函数 我想知道重复是否有任何缺点require calls 请注意 该功能只是个人实用程序 不被共享 即 我是唯
  • 通过在 R 中填充 NA - 使栅格达到相同程度

    我有几个具有不同几何形状 轮廓的裁剪栅格 具体而言 同一田地的几年的空间产量图 但范围有所不同 测量并不总是整个田地的整体 但在某些年份只是其中的一部分 我想计算这些地图的平均值并将它们组合成一个平均值栅格 然而 这确实意味着 假设 5 层
  • AWS DynamoDB 的 r 语言支持 [重复]

    这个问题在这里已经有答案了 这是对此的后续 更新问题 AWS dynamodb 支持 R 编程语言 https stackoverflow com questions 14224919 aws dynamodb support for r
  • 使用 geom_bar 按列中一个特定值的计数对 y 轴进行排序

    想知道如何通过减少猕猴桃的数量来对 y 轴上的簇进行排序 df data frame df data frame matrix df nrow 200 ncol 2 colnames df lt c cluster name df clus
  • 如何从闪亮模块调用闪亮模块?

    如何从闪亮模块中调用闪亮模块并传递第一个模块中的选择 作为一个例子 我编写了一个应用程序来显示星球大战主题dplyr在 DT data 表中 模块StarWars 来自同一数据集的相关电影应显示在另一个子选项卡 模块电影 的另一个 DT d
  • 在for循环中重命名ggplot2图

    我有一个关于在 for 循环中创建 ggplot2 图表 根据迭代重命名它们 然后在网格中排列图表的问题 我想做类似这个虚拟示例的事情 library ggplot2 a c 1 2 3 b c 4 5 6 for i in c 1 5 x
  • 修改 GGplot2 对象

    然而 我很好奇 是否可以添加任何特定的图例或将哪个物种对应于观察到的预期绘图中 以分别知道它是哪个圆圈 我目前使用的是一个名为 finches 的假数据集 该包称为 cooccurr 它创建一个 ggplot 对象 我很好奇如何实际编辑它以
  • R Markdown / Bookdown 中的水平规则导致错误

    突然 我在 Markdown Bookdown 中编织为 PDF 时遇到错误 我的系统没有任何变化 该错误是由 水平规则 引起的 即 Markdown 中的任意位置 或 尽管两侧都有行空格 我提供了一个简单的违规示例 它不会合并成 PDF
  • 在ggplot2中添加边框或背景以缩放图例guide_colorbar

    我在 ggplot 图中有一个从白色到红色的颜色条 并且白色边框在白色背景上不太明显 有没有办法对图例中的刻度线进行不同的着色或在渐变比例周围添加边框 这是一个最小的例子 df lt data frame x lt rnorm 10 y l
  • 使用 RSQLite 在 R 中加载 SQLite 表

    我有这个函数用来加载 SQLite 表 sqLiteConnect lt function database table library DBI library RSQLite con lt dbConnect SQLite dbname
  • 如何选择独特点

    我是一名 R 程序员新手 我有以下一系列观点 df lt data frame x c 1 2 3 4 y c 6 3 7 5 df lt df gt mutate k 1 df lt df gt full join df by k df
  • 按行重塑矩阵

    我有一个大小为 18000 x 54 的矩阵 我想将其重塑为大小为 54000 x 18 的矩阵 其中初始矩阵的每一行都变成一个有 3 行的矩阵 让我们举个例子 我有一个矩阵如下 a matrix 1 18 nrow 2 ncol 9 by
  • 在 ggplot2 中,如何将堆叠直方图中的小值条形组合在一起?

    示例数据 tmp df lt data frame a rnorm 100 0 1 b rnorm 100 0 5 1 c rnorm 100 0 5 1 d rnorm 100 1 1 e rnorm 100 1 1 gt tidyr g
  • Shiny 中的模态对话框:可以调整宽度但不能调整高度

    在我的 Shiny 应用程序中 我有几个来自闪亮BS 包的模式窗口 我可以像这样调整这些模式窗口的宽度 tags head tags style HTML modal lg width 1200px abs 1 background col

随机推荐

  • 在mysql数据库中存储大量数字的问题

    我正在使用 mysql db 来保存 id 一切正常 但现在像这样的id 10000000754987 存储为1 0000000754987E 14 我该如何解决它 该字段设置为 varchar 255 个字符限制 我很感激任何帮助 Tha
  • 确定模板中结构或元组的成员偏移量

    我想编写一个模板函数 将表写入 HDF5 文件 签名应该类似于 template
  • 使用 Codeigniter 发送电子邮件时出现问题 - 在邮件正文中发送标头

    codeigniter 中的电子邮件类出现奇怪的问题 当我直接向我的 Gmail 帐户电子邮件地址发送电子邮件时 效果很好 但是 如果我将电子邮件发送到不同的电子邮件地址并使用 POP3 将该电子邮件地址导入到 gmail 中 则由于某种原
  • 从分数列表生成标准竞赛排名

    给定分数列表 例如 5 5 4 2 2 0 我希望返回标准竞赛排名 1 1 3 4 4 6 From 维基百科的排名页面 http en wikipedia org wiki Ranking 这里是SRC的总结 标准竞赛排名 1224 排名
  • 如何在流星中响应式聚合 mongodb

    我是流星新手 我建立了发布 订阅的概念 我在反应式执行聚合时遇到以下错误 客户端代码 import Template from meteor templating import ReactiveVar from meteor reactiv
  • 在我的 virtualenv 中,我需要对所有命令使用 sudo

    我设置了一个virtualenv 这是有效的 但由于某种原因我需要使用sudo对于像这样简单的命令mkdir 显然我做错了什么 知道它可能是什么吗 Thanks 检查目录权限和所有者并给出 sudo chown R me me virtua
  • 模拟无法与 RSpec 和 Devise 配合使用

    我目前正在使用 RSpec 2 开发 Rails 3 Web 应用程序 并且我们使用 Devise 进行身份验证 我们的一个 很快还有许多 控制器要求用户登录 我知道 Devise 提供了sign in测试助手 但它可以与 RSpec 或
  • 在JPanel中调用setEnabled(false)的原因

    我现在在 Swing 上工作了一段时间 但在实践中从未遇到过需要打电话的情况setEnabled false in JPanel 尽管如此 我有时会在一些复杂的图形用户界面中看到这样的代码 但我真的不明白为什么有人想用它 所以 请给我一些现
  • 使用 React Router v4 / v5 的嵌套路由

    我目前正在努力使用 React Router v4 来嵌套路由 最接近的例子是路由配置React Router v4 文档 https react router now sh 我想将我的应用程序分成两个不同的部分 前端和管理区域 我在想这样
  • 按特定顺序执行测试套件

    我正在使用 maven failsafe 插件来触发 testng 套件 其配置类似于
  • 如何将 `getOrWaitUntilNonEmpty` 作为单个衬垫执行?

    我有一个高级代码结构 如下所示 val block gt Option Seq String val matches block get toArray 问题是这段代码可能会失败 即 get being None取决于时间 例如我是页 sc
  • “User”对象没有属性“get”

    我正在尝试构建一个ModelForm从这个解决方案here https stackoverflow com questions 862522 django populate user id when saving a model 但是我收到
  • 使用 pytest-django 对现有数据库运行测试

    有谁知道如何使用 pytest django 针对现有 例如生产 数据库运行 Django 测试 我知道 一般来说 这不是单元测试应该做的事情 但就我而言 我在 Heroku 上运行测试 默认情况下 Django 创建一个新的测试数据库 但
  • 在没有代理的 MS SQL 中实现每分钟事件

    我希望我的存储过程每分钟执行一次 但我无法访问 SQL Server 代理 使用 Windows 调度程序和 sqlcmd exe 将是最简单的
  • GitHub API (v3):按创建日期排序标签

    我在使用 GitHub API 时遇到了问题 我需要在单个标签之后创建的所有标签的列表 执行此操作的唯一方法是按日期比较标签 但是 API 的结果不是按日期排序的 API 的结果 rails 存储库示例 网络界面的结果 我所期望的是按日期排
  • PHP 等于 foreach 循环中的箭头运算符[重复]

    这个问题在这里已经有答案了 可能的重复 foreach ex as k gt v 中的 k gt v 是什么意思 https stackoverflow com questions 4758791 what does k v in fore
  • 追加 Blob 数据

    是否有一个函数可以附加 blob 数据JavaScript我目前使用以下方法 var bb new Blob Hello world 2 type text plain bb new Blob bb another data type te
  • 将blur.js 与angularjs 一起使用

    我正在尝试在 div 上制作带有角度的模糊背景效果 如上图所示 为此我正在使用blur js http blurjs com 使用 jquery 一切都可以正常工作 但真正的问题是使用 angularjs 可以实现这一点 最好的方法是什么
  • WPF 复选框:检查更改的处理

    在 WPF 数据绑定中 我可以将 IsChecked 属性绑定到某些数据 例如用户设置 但我需要处理 CheckChanged 事件 我知道我可以单独处理Checked 未选中事件 但是当这个值改变时有什么方法可以得到通知吗
  • data.table:lapply 具有多列输出的函数

    我正在使用一个函数smean cl normal来自 Hmisc 包 它返回一个具有 3 个值的向量 均值以及 CI 下限和上限 当我在一个data table对于 2 个组 我获得 2 列和 6 行 有没有办法获得与 2 个组相对应的两行