data.table 按引用赋值`:=` 的标准形式和函数形式的不同结果

2024-04-24

标准中的 data.tabel 通过引用 := 赋值与函数形式之间似乎存在细微差别。

标准形式将 RHS 强制为向量,而函数形式则不然。 一个细节,但我认为没有记录。

library(data.table)
dt <- data.table(a = c('a','b','c'))
v <- c('A','B','C')
l <- list(v)

all.equal(copy(dt)[, new := v], copy(dt)[, `:=` (new = v)])
# [1] TRUE
all.equal(copy(dt)[, new := l], copy(dt)[, `:=` (new = l)])
# [1] "Datasets have different column modes. First 3: new(character!=list)"

copy(dt)[, new := l][]
#    a new
# 1: a   A
# 2: b   B
# 3: c   C

copy(dt)[, `:=` (new = l)][]
#    a   new
# 1: a A,B,C
# 2: b A,B,C
# 3: c A,B,C

这是我最初提出这个问题的主要编辑。


这是一个非常好的问题,涉及到设计决策:=操作员。

对于简单的调用,使用:=作为运营商,就像col := val,我们决定包装val自动进入列表。做出此决定是为了让用户更方便地分配单列。

当您使用函数调用形式时,":="(col = val)我们没有包装val不再进入列表。它已经是扩展形式了。:=充当别名list但正在更新in-place。您可以随时通过更改来检查更新的列:= into list (or .) like .(col = val).

即使使用时也不是这样:=作为操作员,您仍然需要提供 RHS 作为您正在创建 2 个以上列的列表,c("col1","col2") := list(val1, val2).

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

data.table 按引用赋值`:=` 的标准形式和函数形式的不同结果 的相关文章

随机推荐

  • IIS 7.5 上的 ASP.NET MVC - 错误 403.14 禁止

    我正在使用 Visual Studio 2010 RC 运行 Windows 7 Ultimate 64 位 我最近决定让 VS 在 IIS 上运行 调试我的应用程序 而不是在它附带的开发服务器上 但是 每次我尝试运行 MVC 应用程序时
  • 如何在我的 Phonegap 应用程序中升级 Phonegap?

    我有一个 Phonegap 应用程序 是从早期版本的 Phonegap 启动的 我想将其升级到最新版本 我需要采取哪些步骤来升级它 我正在寻找一般答案 但我的具体情况是 Phonegap 1 1 0 gt 1 2 0 我今晚发现了这个 看起
  • 使用反应虚拟化和新的 CellMeasurer 实现动态行高

    我正在使用带有 Autosizer List 和 CellMeasurer 组件的 React Virtualized 9 当列表数据更改时 我需要更新行高 看来 自从版本 9 中支持 React Fiber 的更改以来 CellMeasu
  • “by viewModels()”Kotlin 属性委托未解析的引用

    我正在尝试用 kotlin 实现 viewmodel 首先我添加了所需的依赖项 implementation androidx appcompat appcompat 1 1 0 implementation androidx core c
  • 更改区域设置:强制活动重新加载资源?

    所以我的应用程序中有一个语言设置 切换语言时 我希望所有文本视图等立即更改语言 目前我只是更改配置中的区域设置 因此当用户重新启动活动时语言已更改 我的问题的一个丑陋的解决方案是让每个文本视图在每次更改语言时加载新资源 有更好的解决方案吗
  • git stash apply 和 git stash apply --index 有什么区别?

    每当我跑步时git stash apply and git stash apply index完成后git stash a即使我的 WIP 目录有暂存的更改 未暂存的 但跟踪的更改 和未跟踪的文件 我也会得到相同的结果 这是正常的吗 不应该
  • 将 XML 转换为带属性的 ruby​​ 哈希

    客观的 将 XML 转换为 ruby Hash 包含所有节点和属性值 我尝试了什么 xml
  • ASP.Net Core 回发后如何保持选项卡处于活动状态

    我有一个视图 其中包含一组选项卡 每个选项卡呈现不同的部分视图 阅读这些引导选项卡的文档和 W3Schools 示例后 我无法找到一种方法使活动选项卡在回发时保持活动状态 我见过的所有示例都使用旧版本的 Net 并且也不适用 这是我的代码
  • 类型错误:$.browser 未定义

    我正在使用 msdropdown 图像组合框来创建下拉选择选项 当我在我的电脑上本地运行此代码时 一切都运行良好 但是当我在 GoDaddy 服务器上运行它时 msdropdown 被禁用 它不适用于任何浏览器 Firebug 将错误显示为
  • Rust 双与号,&&

    我看到一些代码如下所示 fn test lt a gt a mut a str 我知道 a 是一生 而 是引用 但是我很难理解双重引用 根据我的理解 引用是一个指针 那么 是指向另一个指针还是其他指针的指针 根据我的理解 引用是一个指针 是
  • Gitlab:无法识别对等方的证书颁发者

    我在全新安装 gitlab 时遇到此错误 该消息如下所示 fatal unable to access https gitlab ci token email protected cdn cgi l email protection som
  • 用于事件驱动通信的 SQL CLR

    我工作的地方他们正在使用长轮询检测数据库中发生的事件的技术 虽然它有效 我认为每个人都会同意轮询数据库并不是最佳选择 我宁愿尝试某种推送技术或技巧 因此 我正在考虑使用表触发器打电话给SQL CLR将事件放入队列或调用 Web 服务的对象
  • Angular 子组件 ng-invalid

    我正在创建一个自定义输入组件 该组件通过实现实现形式兼容ControlValueAccessor 该输入组件是一个或多个子输入的组合 但我无法获取ng invalid要传播给子级的 CSS 类input元素 我的自定义输入组件有一个类似的模
  • ASP MVC Less 文件给出: 调用目标已引发异常

    我有一个简单的 asp net mvc 4 站点 使用较少的文件 当我在本地电脑上运行它时 它工作正常 但是当我将其发布到服务器时 我收到以下错误 During the output text content of processed as
  • 更改 iframe 上的鼠标光标

    我想将鼠标光标从手动状态取消为默认状态 其中出现白色箭头 我有一个简单的 iframe 但我认为 iframe 内有一个链接导致光标更改为指针 手 我该如何更改该行为 这不起作用 iframe cursor default 如果您可以访问
  • R 防止饼图中重叠

    我的数据是这样的 VariantClass PASS ONTARGET Silent 50 30 Missense 47 00 Nonsense 0 74 Startloss 0 26 Stoploss 0 74 Frameshift in
  • 如何在 Python 中使用 LXML 捕获 XML 文件的所有元素名称?

    我能够使用 lxml 来完成我想做的大部分事情 尽管浏览令人困惑的示例和教程很困难 简而言之 我能够读取外部 xml 文件并通过 lxml 将其导入正确的树状格式 为了证明这一点 如果我输入 print etree tostring myX
  • Mongoose 连接两个集合并仅从连接的集合中获取特定字段

    我在加入猫鼬中的两个集合时遇到问题 我有两个集合 即 学生和考试 学生模型 fullname type String required true email type String required true 考试模式 test type
  • 我应该如何在 HTML 中表达 15/16 之类的分数?

    我知道有 1 2 1 4 和 3 4 的 HTML 实体 但是还有其他实体吗 比如 1 3 还是 1 8 有没有一种好方法来编码任意分数 how about 15 16
  • data.table 按引用赋值`:=` 的标准形式和函数形式的不同结果

    标准中的 data tabel 通过引用 赋值与函数形式之间似乎存在细微差别 标准形式将 RHS 强制为向量 而函数形式则不然 一个细节 但我认为没有记录 library data table dt lt data table a c a