我什么时候应该在 data.table 中使用 := 运算符?

2023-11-26

data.table对象现在有一个 := 运算符。该运算符与所有其他赋值运算符有何不同?另外,它有什么用途,速度有多快,什么时候应该避免使用?


这是一个示例,显示 10 分钟缩短为 1 秒(摘自 NEWShomepage)。这就像子分配给data.frame但不会每次都复制整个表。

m = matrix(1,nrow=100000,ncol=100)
DF = as.data.frame(m)
DT = as.data.table(m)

system.time(for (i in 1:1000) DF[i,1] <- i)
     user  system elapsed 
  287.062 302.627 591.984 

system.time(for (i in 1:1000) DT[i,V1:=i])
     user  system elapsed 
    1.148   0.000   1.158     ( 511 times faster )

:= in j这样可以有更多的习语:

DT["a",done:=TRUE]   # binary search for group 'a' and set a flag
DT[,newcol:=42]      # add a new column by reference (no copy of existing data)
DT[,col:=NULL]       # remove a column by reference

and :

DT[,newcol:=sum(v),by=group]  # like a fast transform() by group

我想不出任何理由可以避免:=!除了,在一个for环形。自从:=出现在里面DT[...],它的开销很小[.data.table方法;例如,S3 调度并检查参数的存在和类型,例如i, by, nomatch等等,所以对于内部for循环,有一个低开销的直接版本:= called set. See ?set了解更多详细信息和示例。的缺点set包括那个i必须是行号(无二分查找)并且不能将其与by。通过做出这些限制set可以显着减少开销。

system.time(for (i in 1:1000) set(DT,i,"V1",i))
     user  system elapsed 
    0.016   0.000   0.018
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我什么时候应该在 data.table 中使用 := 运算符? 的相关文章

  • R markdown PDF:为测验者暂时隐藏剧透代码

    我正在使用 R markdown 创建 PDF R 课程 我想插入一个如下所示的测验 output pdf document What is the class of the following R object 1 pi r class
  • 超过阈值的时间序列值的聚合计数(按年月)

    我现在正在学习 R 并使用 SEAS 包来帮助我在 R 中进行一些计算 并且数据与 SEAS 包喜欢的格式相同 这是一个时间序列 require seas data mscdata dat int lt mksub mscdata id 1
  • ggplot2:图例下方的中心图例而不是面板区域

    ggplot默认情况下 图例位于面板下方居中 这在某些情况下确实令人沮丧 请看下面的例子 ggplot diamonds aes cut fill clarity geom bar coord flip theme legend posit
  • R:行数不相等的列绑定

    我有两个数据集 它们每个都有变量 ID Block 和 RT 反应时间 我想合并 列绑定这两个集合 以便我拥有一个包含变量的数据集 ID 块 RT1 RT2 问题是两个集合中的行数不相等 此外 ID 和块号匹配也很重要 缺失值应替换为 NA
  • R 的 read.csv 在第一列名称前面加上垃圾文本[重复]

    这个问题在这里已经有答案了 我已将数据从 SQL Server Management Studio 中的结果网格导出到 csv 文件 csv 文件看起来正确 但是当我使用 read csv 将数据读入 R 数据帧时 第一个列名称前面带有 如
  • 无法在表适配器配置属性中找到对象“Web.config”的连接“MyConnName”

    I want to change the query in table adapter but it s not opening throwing an error Configure table Adapter Failed in pro
  • 将 12 小时字符时间转换为 24 小时

    我有一个包含字符格式时间的数据集 我试图将其从 12 小时格式转换为 24 小时格式 我做了一些搜索 但我发现的所有内容似乎都假设字符已经采用 24 小时格式 这是我工作时的一个例子 times lt c 9 06 AM 4 42 PM 3
  • 如何在 R 中解析堆叠多个 JSON 的文件?

    我在 R 中有以下 堆叠 JSON 对象 example1 json ID 12345 Timestamp 20140101 Usefulness Yes Code event1 A result 1 ID 1A35B Timestamp
  • 收集四列,其中两个键中包含值

    已经提出了类似的问题 但它们都涉及在一个关键列中收集多个列 我需要两个键中的多个列 这是我的数据框 ID measure A 1 measure A 2 measure B 1 measure B 2 1 8 25 23 5 4 5 2 8
  • R 中 nlme 包中的 gls 函数出错

    我不断收到这样的错误 Error in coef lt corARMA tmp value c 18 3113452983211 1 56626248550284 Coefficient matrix not invertible 或者像这
  • 无效的命令名称“tk_chooseDirectory”错误

    我使用 bioconductor 进行 WES 管道 并使用 tk choose dir 选择用户存储输入文件的目录 并将其存储以供进一步使用 这里是命令行 library tcltk dataDir lt dirname tk choos
  • R 带有列和行的分面 qqplots

    我需要使用按行和列的构面创建 qqplot 我了解如何用列和行绘制分面图 但我不确定如何设置我的数据 最终 我想按列和行对数据集进行分组 然后按升序对 建模 结果和 观察到 结果进行排序 同时添加带有 行 组的列和带有 列 组的列 我一直在
  • R中无法连接odbc数据库

    我一直在尝试使用以下命令将我公司的 DMS 连接到 RodbcConnect命令 但收到以下消息 myConn lt odbcConnect NZSQL uid cejacobson pwd password Warning message
  • 如何更改 r 中的树状图标签

    我在 R 中有一个树形图 它基于使用 hclust 的分层聚类 我正在对不同颜色的标签进行着色 但是当我尝试使用以下命令更改树图的标签 集群所基于的数据帧的行 时dendrogram dendrogram gt set labels dat
  • 配置 fix() 和 edit() 以从 R/RStudio 在 Notepad++ 中打开

    当我在 RStudio 或 RGUI 中执行此操作时 fix SomeFunction 或使用edit 我可以在记事本中看到该函数的代码 有什么方法可以更改此设置 以便代码预览在 Notepad 中打开 而不是在普通的旧记事本中打开 同样
  • 使用 2 个向量参数翻转函数

    我想对需要 2 个向量参数的函数应用滚动 这是使用 data table 的示例 不起作用 library data table df lt as data table cbind data frame x 1 100 y 101 200
  • ggsubplot 是否适用于 R 3.2.1+?

    CRAN 提供的 ggsubplot 版本与 R 的最新版本 例如 3 1 1 不兼容 运行 ggsubplot 示例会返回以下错误 Error in layout base data vars drop drop At least one
  • R:(中缀)运算符的两个定义之间的冲突:如何指定包?

    在 R 中 每当两个包定义相同的函数时 很容易指定要使用哪个包pkg foo 但是 当冲突的功能是一个时 你该怎么办 infix运算符 即使用定义 举个例子 两者ggplot2 and crayon define 有没有一种方法可以让我默认
  • 行方向变异的有效方法

    我有两个数据框 dfUsers and purchases使用以下代码生成 set seed 1 library data table dfUsers lt data table user letters 1 5 startDate sam
  • RMySQL fetch - 找不到继承的方法

    使用 RMySQL 我想将数据从数据库加载到 R 中的数据帧中 为此 我使用以下代码 R连接数据库 con lt dbConnect MySQL user root password password dbname prediction h

随机推荐

  • 在java中将纬度和经度转换为北距和东距?

    如何在Java中将纬度和经度转换为北向和东向 我假设您指的是英国 OSGB 东移和北移 这背后的三角学很搞笑 但你可以使用JCoord库 它使它变得容易 如果相当CPU密集 为了跟进下面 DD 的评论 JCoord 存在一个问题 即您必须确
  • 如何解析通过/proc文件传递给内核模块的大量数据?

    Edit 我已经发现seq file这简化了将大量数据从内核写入用户空间的过程 我正在寻找的是相反的 一种有助于从用户空间读取大量数据 多于一页 的 API Edit 2 我正在实施一个端口
  • 嵌入网站的一部分

    假设我想将我最喜欢的网络漫画之一的最新连环漫画嵌入到我的网站中作为对其的一种推广 网络漫画的 div 内有带有 id 的条带 所以我想我可以将 div 嵌入到我的网站中 但我找不到任何代码示例来说明如何做到这一点 它们都展示了如何嵌入 fl
  • 我可以在 matplotlib 中循环使用线条样式吗

    我知道如何在 matplotlib 中循环显示颜色列表 但是是否可以对线条样式 纯线 点线 虚线等 做类似的事情 我需要这样做 以便我的图表在打印时更容易阅读 有什么建议如何做到这一点 像这样的事情可能会起作用 import matplot
  • 如何实现 C#4 的 IDynamicObject 接口?

    要在 C 4 0 中实现 方法缺失 语义等 您必须实现 IDynamicObject public interface IDynamicObject MetaObject GetMetaObject Expression parameter
  • 预先确定大叶的最佳放大级别

    我正在使用 folium 绘制一些地图 工作相当顺利 但是 我不知道如何预先计算正确的缩放级别 我可以自动设置 import folium m folium Map point of interest iloc 0 Lat point of
  • 如何在 Javascript 中创建最佳拟合多项式曲线?

    我正在尝试使用 3 6 阶多项式计算数据的最佳拟合曲线 我找到了这个教程 JavaScript 中的三次回归 最佳拟合线 首先 我似乎无法让我的输出远程匹配曲线 jsbin在这里 http jsbin com qukuqigobu 1 ed
  • 如何将 rtf 字符串提供给 richtextbox 控件

    我有一串富文本字符 标记 我想将其提供给代码中的富文本框 string rt rtf1 ansi ansicpg1252 deff0 deflang1033 fonttbl f0 fswiss fcharset0 Arial f1 fnil
  • 将同一数据框中的两列合并为一列

    我有一个问题将同一数据帧 start end 中的两列合并为一列 并删除空值 我打算合并 Start station and End station into station 并保留 duration 根据新专栏 station 我努力了p
  • 强制 Idea 生成 R.Java 文件的最简单方法是什么?

    我正在尝试使用 intellij idea 运行 Android 示例应用程序 但记事本示例源目录中缺少 R Java 文件 确保您有正确的设置 项目结构 gt Facets gt Android gt yourproject gt 编译器
  • 类内的类型提示[重复]

    这个问题在这里已经有答案了 class Node def append child self node Node if node None self first child node self child nodes node 我该怎么做n
  • EcmaScript 6 - Tern IDE 解决 Eclipse 验证错误

    我正在使用 Eclipse Mars 以及版本 1 1 0 快照 上支持 ES6 的 Tern IDE 我在箭头函数和 const exports 上收到验证错误 如以下屏幕截图所示 我完成了这些描述 但错误不会消失 https githu
  • 使用JQuery如何显示和隐藏不同div的onClick事件

    我想显示一个基于链接的 Onclick 事件的 div 首次单击 显示 div1第二次单击 隐藏剩余的 div 并显示 div2第三次单击 隐藏剩余的 div 并显示 div3第四次单击 隐藏剩余的 div 并显示 div1 gt 重复循环
  • TypeScript:获取超类的类型?

    我想知道是否有办法在打字稿中获取扩展类的类型 class BaseClass baseProp string class SubClass extends BaseClass subProp string type someType
  • 如何添加系统“Windows 挂钩”以便在创建/激活窗口时收到通知?

    尝试了很多方法 但在我的任务栏被破坏以及桌面用户界面上出现其他超自然效果的情况下 我无法让它始终如一地工作 尝试使用开放库http mwinapi sourceforge net 第一的 尽管它作为面向对象层来枚举窗口和其他东西效果很好 它
  • 将 Javascript 添加到 WKWebView

    你好 我知道这似乎是一个超级简单的问题 但我想将此 JS 添加到我的 WebView 中 现在显然我知道这是 HTML 但我不确定要在 evaluateJavaScript 中放入什么才能使用 JS 源 抱歉 如果这不是很清楚 我对 Swi
  • 从 C 函数构建 PyObject*?

    我正在将 Python 嵌入到我正在制作的 C 库中 我希望用户能够以函数指针的形式传递 C 函数PyObject fpFunc PyObject PyObject 这样我就可以在嵌入式Python中使用这些函数 所以我有一个函数指针 并且
  • 如何使用 python 和 Matplotlib 更新绘图

    我一直在努力尝试使用 matplotlib 和 python 和 wxpython 来更新图表 我想按下一个按钮并将数据添加到嵌套在 wx notebook 中的图表中 下面是代码 谢谢您的帮助 import wx import matpl
  • 在 Java 中取消转义 JavaScript 转义值

    在我们的 Web 服务中 我们通过 JavaScript 设置了一个 cookie 我们在 Java Servlet 中再次读取该 cookie 然而 我们需要转义 cookie 的值 因为它可能包含非法字符 例如 这会弄乱 cookie
  • 我什么时候应该在 data.table 中使用 := 运算符?

    data table对象现在有一个 运算符 该运算符与所有其他赋值运算符有何不同 另外 它有什么用途 速度有多快 什么时候应该避免使用 这是一个示例 显示 10 分钟缩短为 1 秒 摘自 NEWShomepage 这就像子分配给data f