Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在使用data.table ()时会复制吗?

在使用data.table ()时会复制吗?
EN

Stack Overflow用户
提问于 2017-10-26 07:58:34
回答 1查看 90关注 0票数 0

这是一个示例data.table

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
set.seed(123)
mydt <- data.table(id = 1:100, x = sample(LETTERS[1:6], size = 100, replace = TRUE), group = paste0("group", sample(1:3, size = 100, replace = TRUE)), prob = runif(100, 0, 1))

我使用tydir::spread从长格式到宽格式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mydt2 <- mydt %>% spread(group, prob)

然后,我想定义新列,如

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mydt2[!is.na(group1), new.col := x]

如果我这样做,我会收到以下警告

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Warning message:
In `[.data.table`(mydt2, !is.na(group1), `:=`(myscale, x)) :
 Invalid .internal.selfref detected and fixed by taking a (shallow) copy

等等,如果我用这个代替

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mydt2 <- copy(mydt %>% spread(group, prob))
mydt2[!is.na(group1), myscale := x]

我没有收到任何警告。我不明白这种行为。有人能提供帮助吗?使用copy()是解决这个问题的正确方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-27 03:38:33

我认为使用dcast是可行的。但是,使用tidyr::spread的一个可能的解决方案是将setDT()添加到管道调用中,即,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
set.seed(123)

# install.packages(c("data.table"), dependencies = TRUE)
library(data.table)

mydt <- data.table(id = 1:100, x = sample(LETTERS[1:6], size = 100, replace = TRUE),
                   group = paste0("group", sample(1:3, size = 100, replace = TRUE)),
                   prob = runif(100, 0, 1)
                   )

class(mydt)
mydt2 <- mydt %>% tidyr::spread(group, prob) %>% setDT()

mydt2[!is.na(group1), new.col := x]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46958830

复制
相关文章
你们公司在使用 Flink 吗?
小刘,服务器这会好卡,是不是出了什么问题啊,你看能不能做个监控大屏实时查看机器的运行情况?
CSDN技术头条
2019/05/16
1.6K0
你们公司在使用 Flink 吗?
codeblocks文件读取之后,在输出中文时会乱码
本来没打算写这个文,但是帮助我的大佬说可以写,正好也帮助一下可能出现这个问题的小可爱们
阿湫
2019/11/30
2.3K0
codeblocks文件读取之后,在输出中文时会乱码
当从Pod访问百度时会用到VTEP吗
一个公众号关注者私信问我一个问题:从 Pod 内发起的,向外网的访问过程会涉及到 VTEP 吗?涉及到的 NAT 细节是什么?
LanceZhang
2022/04/15
3760
当从Pod访问百度时会用到VTEP吗
在 TKE 中使用 Velero 迁移复制集群资源
李全江(jokey),腾讯云容器工程师,热衷于云原生领域。目前主要负责腾讯云 TKE 的售中、售后的技术支持,根据客户需求输出合理技术方案与最佳实践。 概述 Velero(以前称为 Heptio Ark)是一个开源工具,可以安全地备份和还原,执行灾难恢复以及迁移 Kubernetes 集群资源和持久卷,可以在 TKE 集群或自建 Kubernetes 集群中部署 Velero 用于: 备份集群并在丢失的情况下进行还原。 将集群资源迁移到其他集群。 将生产集群复制到开发和测试集群。 更多关于 Velero
腾讯云原生
2021/02/23
7700
Android笔记:使用Glide加载图片刷新时会闪烁
可能这个问题很常见,大家也有不少人解决了,大部分人用的方法一和二如果你还没解决的话,那么看这篇文章就对了 使用RecyclerView,Glide加载图片,当点击图片进行刷新,不管是局部刷新还是全部刷新的时候,都会使用glide重新加载图片,这时候如果glide加载图片的时候没设置好就会出现刷新的时候闪烁的问题,当然这是我出现的问题。
程思扬
2022/01/10
2.6K0
Reddit 观察:你何时会考虑使用 Cpp 而非 Rust ?
一位同时使用过 Rust 和 Cpp 的开发者,他用 Rust 主要是实现 Web 服务器和命令行工具,而 Cpp 则用于游戏开发(虚幻引擎)和编写虚幻引擎插件。
张汉东
2023/09/13
3510
Reddit 观察:你何时会考虑使用 Cpp 而非 Rust ?
在MySQL中使用!=还能走索引吗?
一般情况下,我们会在一个索引上较多的使用等值查询或者范围查询,此时索引大多可以帮助我们极快的查询出我们需要的数据。
闻说社
2023/03/07
1.2K0
「Workshop」第五期:使用data.table操作数据
使用c("<name of col1>", "<name of col2>")和.(col1, col2)效果一样
王诗翔呀
2020/07/03
3.3K0
基于data.table的“tidyverse”?
tidyverse作为R语言数据分析中的瑞士军刀,非常好用,一个小小的缺点就是速度慢,data.table速度快,所以他们团队又开发了dtplyr,加快运行速度。
医学和生信笔记
2022/11/15
4650
基于data.table的“tidyverse”?
data.table包使用应该注意的一些细节
  注意默认nThread=getDTthreads(),即使用所有能用的核心,但并不是核心用的越多越好,本人亲自测试的情况下,其实单核具有较强的性能,只有在数据大于3Gb的情况下,开启10核(我的机器全部核心30多核)效率才比一个核心更高,而默认使用全部的核心效率一直非常低。因此对于不是非常巨大的文件,建议设置为1,不要使用全部核心
用户1680321
2018/08/01
1.5K0
你知道在springboot中如何使用WebSocket吗
  我们都知道 http 协议只能浏览器单方面向服务器发起请求获得响应,服务器不能主动向浏览器推送消息。想要实现浏览器的主动推送有两种主流实现方式:
用户2038589
2019/05/24
2.8K0
session何时会被创建
session何时会被创建 1、 请求JSP页面时自动创建session,利用request.getSession(true);语句 原因: 由于HTTP是无状态协议,这意味着每次客户端检索网页时,都要单独打开一个服务器http连接,如果我同一个浏览器,不同页面打开你的主页10次,那就要进行10次连接和断开(TCP3次握手,4次挥手),浪费系统资源,http提供了一种长连接,keep-alive,相同会话的不同请求可以用同一连接,故jsp默认创建session。而session的创建过程中会自动将ses
用户7718188
2021/10/08
7830
我应该使用 PyCharm 在 Python 中编程吗?
Python 是一种广泛使用的编程语言,以其简单、多功能和庞大的开发人员社区而闻名。这个社区不断创建新的库和工具,以提高Python编程的效率和便利性。选择正确的环境来编写和调试 Python 代码可能具有挑战性,但 PyCharm 是一个很好的选择,从其他选项中脱颖而出。
很酷的站长
2023/02/20
4.7K0
我应该使用 PyCharm 在 Python 中编程吗?
小米手机的高端战略,易复制吗?
12月11日,小米公司交出了手机高端化三年期的答卷——小米13 。和之前的机型相比,小米13的定价有了一定程度的提升,此外,小米MIX Fold 2的起始定价也大幅提升至8999元。
华尔街科技眼
2022/12/21
3500
小米手机的高端战略,易复制吗?
今天过节的小青年们,到2030年时会全部失业吗?
导读:今天是五四青年节,不知道这个节你是怎么过的?放了半天假?收到礼物?收到过节福利?普及了五四运动的历史?进行了爱国主义教育?还是没有任何的仪式感,就这么过去了?
IT阅读排行榜
2018/08/17
9750
​Redis:在集合中复制键
问题描述: 由于某种原因,我必须需要将某个集合的键(Key)复制一份副本。并移动到目标库
PayneWu
2021/06/10
1.9K0
​Redis:在集合中复制键
芯片创企伸手,神话可以复制吗?
本文希冀在复杂环境下理出些思绪,探讨一下芯片创企如何走出一条自己的路,甚至成为下一代巨头。
镁客网
2018/08/16
3230
芯片创企伸手,神话可以复制吗?
丰田生产方式可以直接复制吗?
故事开始于丰田车主参观了一条装配线和大规模生产设施--这种装配线为亨利·福特赚了数百万美元。然而,丰田的高管们对此印象并不深刻。他们离开工厂后觉得浪费太多,整个操作没有意义。之后,他们参观了一家超市--Piggly Wiggly--就在这里里灵感击中了他们。在超市,他们注意到,只要有顾客买了一杯饮料,就会立即换成另一杯。换句话说,货架上没有等着要人买的饮料。下一杯饮料只有在前一杯被购买时才会被取出。这引发了“拉动式生产”原则的诞生,丰田汽车公司将其作为丰田生产系统的核心原则之一。
用户9972271
2023/02/08
5310
当你在 Linux 上启动一个进程时会发生什么?
英文:Julia Evans,编译:Linux中国 / jessie-pang linux.cn/article-9256-1.html 本文是关于 fork 和 exec 是如何在 Unix 上工作的。你或许已经知道,也有人还不知道。几年前当我了解到这些时,我惊叹不已。 我们要做的是启动一个进程。我们已经在博客上讨论了很多关于系统调用的问题,每当你启动一个进程或者打开一个文件,这都是一个系统调用。所以你可能会认为有这样的系统调用: start_process(["ls","-l","my_cool_dir
企鹅号小编
2018/02/02
1.1K0
用data.table语句批量处理变量
本期“大猫R语言公众号”仍由“村长”供稿。村长继续为大家奉上data.table使用案例心得,希望大家能够继续支持村长!!
用户7652506
2020/10/23
1.2K0
用data.table语句批量处理变量

相似问题

在创建对象时会复制方法吗?

10

为什么data.table在添加新列时会被复制?

12

向量在返回时会被复制吗?

20

为什么data.table在从Map返回时会被复制

10

R在修改时会复制整个矩阵吗?

16
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文