为什么 lapply() 不保留我的 data.table 键?

2023-12-25

我的列表中有一堆 data.tables 。我要申请unique()到我的列表中的每个 data.table,但这样做会破坏我的所有 data.table 键。

这是一个例子:

A <- data.table(a = rep(c("a","b"), each = 3), b = runif(6), key = "a")
B <- data.table(x = runif(6), b = runif(6), key = "x")

blah <- unique(A)

Here, blah仍然有一把钥匙,世界上一切都很好:

key(blah)

# [1] "a"

但是如果我将 data.tables 添加到列表中并使用lapply(),密钥被破坏:

dt.list <- list(A, B)

unique.list <- lapply(dt.list, unique) # Keys destroyed here

lapply(unique.list, key) 

# [[1]]
# NULL

# [[2]]
# NULL

这可能与我没有真正理解“通过引用”分配键的含义有关,因为我还遇到了键消失的其他问题。

So:

  • 为什么 lapply 不保留我的密钥?
  • “通过引用”分配键是什么意思?
  • 我是否应该将 data.tables 存储在列表中?
  • 如何安全地存储/操作 data.tables 而不必担心丢失密钥?

EDIT:

就其价值而言,令人恐惧的for循环也工作得很好:

unique.list <- list()

for (i in 1:length(dt.list)) {
  unique.list[[i]] <- unique(dt.list[[i]])
}

lapply(unique.list, key)

# [[1]]
# [1] "a"

# [[2]]
# [1] "x"

但这是R,并且for循环是evil.


有趣的是,请注意这两个不同结果之间的差异

lapply(dt.list, unique) 
lapply(dt.list, function(x) unique(x)) 

如果您使用后者,结果将如您所期望的那样。


看似意外的行为是由于第一个lapply声明是 调用unique.data.frame(即来自{base})而第二个正在调用unique.data.table

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

为什么 lapply() 不保留我的 data.table 键? 的相关文章

  • R foreach问题(某些进程返回NULL)

    我遇到了问题foreach我正在 R 中使用的程序的一部分 该程序用于运行不同参数的模拟 然后将结果返回到单个列表 然后用于生成报告 当并非所有分配的模拟运行都在报告上实际可见时 就会出现问题 从各方面来看 似乎只有分配的运行的一个子集实际
  • 我无法下载 R 中的 reshape2 包 [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我在尝试安装 R 包时收到此响应 gt installed packages reshape2 Package LibPath V
  • R - Plm 和 lm - 固定效应

    我有一个平衡面板数据集 df 本质上由三个变量组成 A B and Y 对于一堆独特识别的区域来说 它会随着时间的推移而变化 我想运行一个回归 其中包括区域 下面等式中的区域 和时间 年份 固定效应 如果我没记错的话 我可以通过不同的方式来
  • 如何计算R中移动窗口内的平均斜率

    我的数据集包含2个变量y 和 t 05s y 每 05 秒测量一次 我正在尝试计算移动中的平均坡度20秒窗口 即计算第一个 20 秒斜率值后 窗口向前移动一个时间单位 05 秒 并计算下一个 20 秒窗口 在以下位置生成连续 20 秒斜率值
  • 尝试读取 CSV 文件时出现“无法识别的字符串转义”

    我正在尝试导入一个 csv文件 以便我可以观看此视频 R ggplot2 图形直方图 http www youtube com watch v 47kWynt3b6M 我安装了所有正确的软件包 包括ggplot以及相关的包 视频中的第一个说
  • Purrr::map_df() 删除 NULL 行

    使用时purrr map df 我偶尔会传递一个数据框列表 其中一些项目是NULL 当我做 map df 返回行数少于原始列表的数据框 我想发生的事情是这样的map df calls dplyr bind rows 它忽略了NULL价值观
  • R 中的列乘以子字符串

    假设我有一个数据框 其中包含多个组件及其在多个列中列出的属性 并且我想对这些列运行多个函数 我的方法是尝试将其基于每个列标题中的子字符串 但我无法弄清楚如何做到这一点 下面是数据框的示例 Basket F Type 1 F Qty 1 F
  • 基于时间窗口的不规则时间序列的优化滚动函数

    有没有办法使用 rollapply 来自zoo包或类似的东西 优化功能 rollmean rollmedian等 使用基于时间的窗口计算滚动函数 而不是基于大量观察的函数 我想要的很简单 对于不规则时间序列中的每个元素 我想计算一个具有 N
  • 在 r 中的 group_by 之后建模后取消列表列的嵌套

    我想对所有组进行线性回归group by 将模型系数保存在列表列中 然后使用 unnest 扩展列表列 这里我用的是mtcars以数据集为例 注 我想用do here becausebroom tidy 不适用于所有型号 mtcars gt
  • 在 Rcpp 中使用其他包中的 C 函数

    我试图从 C 函数中的 cubature 包调用 C 例程来执行多维积分 我试图重现的基本 R 示例是 library cubature integrand lt function x sin x adaptIntegrate integr
  • 如何在 R 中匹配多个 ggplot2 图中的调色板?

    自从被问到这个问题以来已经有一段时间了 但我知道一个事实 我很快就会提取新数据 我想弄清楚如何用这种技术来绘制它 看起来评论和答案中的人知道如何做到这一点 但我无法完全弄清楚所给我的内容 还有人想尝试一下吗 我正在尝试使用具有多个级别的因子
  • 使用 ggmap 截断密度多边形

    我在使用 R ggmap 绘制密度图时遇到问题 我的数据如下所示 gt head W date lat lon dist 1 2010 01 01 31 942 86 659 292 415 2 2010 01 10 32 970 84 1
  • R“错误:“}”中出现意外的“}”[重复]

    这个问题在这里已经有答案了 我有一个字符串变量 对于缺少数据的情况 它具有 空值 我想将 空值 重新编码为缺失 而不是说 空值 我正在尝试编写一个循环来删除这些 空值 条目 但我不断收到错误 错误 中出现意外的 for row in dat
  • R:使用 tidyverse 将 NA 替换为 df 中的其他变量

    我想使用 tidyverse 替换 df 中的 NA 值 我想要的值应该从其他列中计算出来 input ID X1 X2 X3 A 0 96 NA 0 97 B 1 00 NA 1 01 C 0 98 0 03 NA A 1 00 NA 1
  • 任意列中包含字符串的子集行

    我有一个如下所示的数据集 Col1 Col2 Col3 abckel NA 7 jdmelw njabc NA 8 jdken jdne 如何对数据集进行子集化 使其仅保留包含字符串 abc 的行 最终预期输出 Col1 Col2 Col3
  • 闭包作为数据合并习惯的解决方案

    我正在尝试解决闭包问题 而且我think我发现了一个案例 他们可能会有所帮助 我有以下几部分需要处理 一组正则表达式 旨在清理状态名称 位于函数中 具有州名称 上述函数创建的标准化形式 和州 ID 代码的 data frame 用于链接两者
  • Shiny:动态数据框构建; renderUI、观察、reactiveValues

    我认为如何使用 Shiny 的 renderUI 功能动态子集数据的问题经常出现 但我很难理解何时使用 renderUI 带有 uiOutput 而不是其他功能 包括观察 反应 反应值甚至条件面板 我想构建一个完全交互式的数据框架 其中每个
  • 无法更改 RStudio 中的 R 版本

    我的 RStudio V 0 99 491 无法更改 R 版本 我以平常的方式行事Global Options gt R Version 然后它挂起并且不再工作或反应 R 运行良好的初始版本是R 3 1 0 我以前从未遇到过这样的问题 也许
  • 如何修复 R 中 Kaplan Meier 图的风险表计算错误

    以下是一个数据帧 其中 6 个参与者中的每一个都有唯一的 record ID 我想绘制一个生存分析图 其中包含感兴趣事件的复发以及在时间间隔 tstart 到 tstop 内 暴露 药物剂量 数值变量 的时间依赖性协变量 每个参与者的最大
  • 在 Shiny 中的用户会话之间共享反应数据集

    我有一个相当大的反应数据集 该数据集是通过轮询文件然后按预定义的时间间隔读取该文件而派生的 数据更新频繁 需要不断重新加载 诚然 重新加载可以增量完成并附加到 R 中的现有对象 但事实并非如此 然而目前 尽管会话中的数据相同 但此操作是针对

随机推荐

  • a href=javascript:function() 在 Firefox 中不起作用

    我尝试使用a href javascript function 在一个按钮中 并带有执行它的函数 它在 Chrome 中工作 但在 Firefox 中不起作用 Firefox 不会发出警报并打开空白选项卡 有人可以帮助我吗 下面是按钮代码
  • Eclipse + Egit:将项目克隆到工作区

    我对它是如何工作的有点困惑 我在 Github 上有一个现有的 git 存储库 并且想将其克隆到我的工作区中 我的目标是将本地存储库直接存储在我的工作区文件夹中 但我无法将其与 EGit 一起使用 当我想使用 EGit 克隆 github
  • 如何用 Jest 模拟/替换对象的 getter 函数?

    在Sinon我可以做以下事情 var myObj prop foo sinon stub myObj prop get function getterFn return bar myObj prop bar 但我怎样才能对 Jest 做同样
  • 究竟什么是“执着无明”?

    持久性无知通常被定义为持久和检索标准 NET 对象 或 POCO 如果您确实坚持给它们命名 的能力 还有一个标准 NET 对象的定义似乎已被广泛接受 http msdn microsoft com en us magazine dd8825
  • 在javascript中获取div位置(顶部)?

    我使用 css 设置了一个 div 的高度top 26px 我在其他地方还有其他 div 我想与该 div 保持一致 我注意到jquery写作 css top 获取我的 css 而不是 div 的 y 坐标 如何使用 javascript
  • Hibernate 不等于示例标准

    Hibernate 有示例标准 例如 Example equal Example create mydbObject 有没有办法反其道而行之 例如 Example notEqual Example createNotEqual mydbOb
  • 如何在 SBT 中刷新更新的 Git 依赖项?

    我已经配置了 SBT 0 11 0 以将 GitHub 项目作为依赖项拉入 按照我的回答这个问题在这里 https stackoverflow com questions 7550376 how can sbt pull dependenc
  • 在AWS CDK中执行代码之前如何等待堆栈完成?

    我正在尝试 AWS CDK 但当我尝试执行依赖于堆栈完成的代码块时 我陷入了困境 这是我当前的代码 class Application extends cdk Construct constructor scope cdk Construc
  • 如何编写一个函数来比较多组布尔(真/假)答案并对其进行排名?

    我已经开始了一个项目 事实证明它比我最初想象的要复杂得多 我正在尝试规划一个基于布尔 真 假 问题和答案的系统 系统上的用户可以回答大量布尔 真 假 问题中的任何问题 并根据他们的答案看到一个显示最相似用户 按相似度顺序排列 的列表 我在谷
  • 静态容器已经有一个与之关联的内核

    部署到 Azure 时出现与 Ninject 相关的错误 The static container already has a kernel associated with it 但在本地运行良好 而且之前它一直在本地和 Azure 上运行
  • Python 中的 Webdriver 屏幕截图

    使用python在windows上使用Selenium Webdriver进行屏幕截图时 屏幕截图直接保存到程序的路径中 有没有办法将 png文件保存到特定目录 Use driver save screenshot path to file
  • 允许用户选择图像的相机或图库

    我想做的事情看起来很简单 但经过几天的搜索 我不太明白 我有一个应用程序 允许用户选择多个 最多 5 个 图像 我正在使用一个ImageView 当用户点击ImageView 我想让他们选择 从图库中选择图像 或 使用相机捕捉图像 我开始使
  • 拉伸div以填充body

    div style height 20px background color red div div style background color black div div style height 20px background col
  • Spark 客户端模式 - YARN 为驱动程序分配容器?

    我在客户端模式下在 YARN 上运行 Spark 因此我希望 YARN 仅为执行器分配容器 然而 从我所看到的来看 似乎还为驱动程序分配了一个容器 并且我没有得到与预期一样多的执行程序 我正在主节点上运行 Spark Submit 参数如下
  • JSTL 表达式语言访问对象属性

    我今天正在学习一个教程 这个教程让我摸不着头脑一个小时 考虑 public class MyClass public int getTotal amount 100 return amount 以及 JSP 的摘录 p Total obje
  • 万智牌数据库设计

    我想为我拥有的 MTG 卡创建一个数据库 设计会是什么样的 我想存储每张卡的以下信息 1 Name of card 2 Set the card belongs to 3 Condition of card 4 Price it sold
  • 位图插值c#

    网格尺寸 160 160 行数 列数 16 16 我为此创建了一个位图 网格的每个单元格都填充有不同的颜色 我需要执行颜色插值 我猜您想要执行以下操作 拍摄 16x16 像素图像并将其插值为 160x160 像素图像 以下是三个示例输出 您
  • 实现WebView数据库配额委托

    我如何实现这个方法 见下文 我是 Objective C 的新手 我只是不太了解它 From http lists apple com archives Webkitsdk dev 2008 Apr msg00027 html http l
  • 确定将在 php 中发送的 http 状态

    我正在尝试为管理应用程序标头的类编写一个测试用例 它发送的标头中有 http 状态标头 我正在使用 headers list 来查看将发送哪些标头 如果我现在发送标头的话 headers list 的问题是它不包含 http 状态标头 尽管
  • 为什么 lapply() 不保留我的 data.table 键?

    我的列表中有一堆 data tables 我要申请unique 到我的列表中的每个 data table 但这样做会破坏我的所有 data table 键 这是一个例子 A lt data table a rep c a b each 3