加载 data.table 对象后直接使用 get(data.table) 生成新变量

2024-01-14

我正在尝试在 data.table 中生成一个新变量,我生成、保存并再次加载该变量。加载后,我通过 get() 间接寻址 data.table,只要我之前不直接寻址它以创建变量,这对于生成新变量就不起作用。 可能是某种环境问题?

# Generate data.table
t<-data.table(x=c(1,2,3,4))
tStr<-"t"
names(t)

# Generate Variable a -> ok
get(tStr)[, a:=1]
names(t)

# Generate Variable b -> ok
t[, b:=1]
names(t)

# Save
save(t, file="test.Robj")
load("test.Robj", .GlobalEnv)

# Generate Variable c -> fails 
get(tStr)[, c:=1] 
names(t)

# Generate Variable d -> ok
t[, d:=1]
names(t)

# Generate Variable e -> ok again !?
get(tStr)[, e:=1]
names(t)

感谢您的帮助


这是因为重要的元数据无法在存储操作中保留下来:

> t<-data.table(x=c(1,2,3,4))
> attr(t, ".internal.selfref")
<pointer: 0x0000000000100788>
> save(t, file="test.Robj")
> load("test.Robj", .GlobalEnv)
> attr(t, ".internal.selfref")
<pointer: (nil)>
> t[, d:=1]
> attr(t, ".internal.selfref")
<pointer: 0x0000000000100788>

注意你是如何丢失内存指针的。我不确定这到底是一个错误,还是一个data.table是什么save做。看来为了让它正常工作,我们需要一个特殊的load加载时重新分配内部指针的方法data.table对象。

在这种情况下,使用引用修改似乎会重置指针。

EDIT:作为您的用例的解决方法,您可以尝试:

t <- data.table(x=c(1,2,3,4))
save(t, file="test.Robj")
load("test.Robj", .GlobalEnv)
assign("t", get("t")[, c:=3])
t

其按预期工作:

   x c
1: 1 3
2: 2 3
3: 3 3
4: 4 3

另请注意,期望:

get("t")[, c:=3]

会起作用有点像期待:

get("x") <- 5

将工作。data.table将来可能会添加此功能,但您是否正在踏入这个模糊的区域,其中的参考性质data.table确实开始与 R 语义发生冲突。

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

加载 data.table 对象后直接使用 get(data.table) 生成新变量 的相关文章

  • Shiny 中的模态对话框:可以调整宽度但不能调整高度

    在我的 Shiny 应用程序中 我有几个来自闪亮BS 包的模式窗口 我可以像这样调整这些模式窗口的宽度 tags head tags style HTML modal lg width 1200px abs 1 background col
  • 从 R 主题模型中的 DocumentTermMatrix 中删除空文档?

    我正在使用 R 中的 topicmodels 包进行主题建模 我正在创建一个 Corpus 对象 进行一些基本的预处理 然后创建一个 DocumentTermMatrix corpus lt Corpus VectorSource vec
  • 根据值的运行总计创建组

    我的数据在一个变量 Y 上是唯一的 另一个变量 Z 告诉我每个 Y 中有多少人 我的问题是我想从这些 Y 和 Z 创建 45 人的组 我的意思是 每当运行总计Z 达到 45 创建一组 然后代码继续创建下一组 我的数据看起来像这样 ID X
  • SPGridView、数据以及确保数据安全的正确方法

    我正在使用 SPGridView 来呈现一些数据 并启用了效果很好的过滤功能 直到您选择数据中的特定项目进行过滤 有问题的数据项在字符串中包含撇号 例如 这是 richards 的字符串 这会导致后过滤器应用程序页面加载因错误而终止 Syn
  • 当 DataTable 为空时,DataGrid 显示空行

    我有一个DataGrid dg1 绑定到DataTable 数据集 表 代码运行良好并且DataGrid正在显示数据DataTable正确 但是 如果我Clear the DataTable the DataGrid也很清楚 但留下一个空行
  • 正则表达式挑选括号之间的一些文本[重复]

    这个问题在这里已经有答案了 可能的重复 提取 R 中所有括号内的信息 正则表达式 https stackoverflow com questions 8613237 extract info inside all parenthesis i
  • 将文本添加到 ggplot 中的轴标签

    我从下表中绘制了一个图表 BoatPhs fit se lower upper 1 Before 3 685875 0 3287521 3 038621 4 333130 2 After0 20NTA 3 317189 0 6254079
  • 仅在具有重复块名称的另一个 Rmarkdown 文档中运行一个 Rmarkdown 文档中的代码

    我正在 Rmarkdown 中编写一系列相互补充的报告 我想将上一份报告的结果纳入我目前正在编写的报告中 我看到其他建议使用的问题purl从 Rmarkdown 文档中提取 R 代码然后运行它 所以我尝试了以下操作 r read previ
  • r Shiny 中的 fileInput 函数没有响应

    我是 R 和 R闪亮的新手 一直致力于构建一个统计应用程序 该应用程序将允许用户导入文件 然后对数据运行不同的统计程序 直到最近 fileData 函数一直对我来说运行良好 现在每当我尝试上传文件时 都不会打开任何内容 我已尝试了所有我能想
  • Yajra DataTable Laravel 中的 Foreach

    我试图在我的数据表中放入一个 foreach 循环 但它不起作用 附 如果我删除 foreach 一切都已经正常了 这里附上我的代码 Product Product query colors Color all return Datatab
  • 如何在 R 地图库中绘制正确的颜色

    我正在尝试使用 R 地图库为特定国家绘制特定颜色 我可以填写颜色 但它们与各自的国家 地区没有正确关联 我想知道是否有人能知道为什么 我的数据框是 filld 有 3 列 第一列是国家名称 第二列只是一些数字数据 第三列是颜色 countr
  • 在捕食者-被捕食者系统的生态建模中正确使用 deSolve

    我有一个捕食者 被捕食者模型 其中包含指定的参数和初始值 我在这里用两种方法求解微分方程 1 使用 for 循环 2 使用 deSolve 包 我相信 for 循环是正确的 并且应该给出如下图所示的输出 For loop attempt r
  • 带有嵌套分组变量的多行轴标签,用于 - R 中的堆积条形图

    我想使用 ggplot 制作一个包含多个类别的堆叠条形图 并带有嵌套的标记 X 轴 类似于我使用 Excel 制作的条形图 如此处所示 我尝试使用给出的例子here https stackoverflow com questions 181
  • 如何在multilist中设置xlim?

    以下代码创建 3 个向量 并将它们显示为交错直方图 a lt c 1 2 3 b lt c 1 1 2 c lt c 1 1 1 l lt list a b c multhist l col c red green blue xlim c
  • 如何优化 R 中的 sapply 来计算数据帧上的运行总计

    我在 R 中编写了一个函数来按月份计算累积总数 但随着数据集变大 我的方法的执行时间呈指数增长 我是一名 R 程序员新手 你能帮我提高效率吗 该函数以及我调用该函数的方式 accumulate lt function recordnum d
  • Sql批量复制截断小数

    当我使用批量复制将十进制值从 C DataTable 插入 Sql Server 2005 时 值会被截断而不是四舍五入 DataTable 中的数据类型为 Decimal 数据库中的数据类型为Decimal 19 3 数据表中的值为 1
  • 通过 RCpp 返回 NA

    新手 RCpp 问题在这里 How can I make a NumericVector returnNA到R 例如 假设我有一个 RCpp 代码 它分配NA到向量的第一个元素 RCpp export NumericVector myFun
  • 通过 r 中的组变量进行汇总

    我有一个数据框如下 head newStormObject FATALITIES INJURIES PROPVALDMG CROPVALDMG EVTYPE total 1 0 15 2 5e 05 0 TORNADO 15 2 0 0 2
  • DT数据表中的列对齐

    In my shiny我正在使用的应用程序datatable函数来自DT库构建一个表格并希望将列居中对齐 我可以用formatStyle column textAlign center 但它只影响列体而不影响标题 我们必须设置columnD
  • R - 如何为数据范围内的缺失值绘制条形图零点?

    假设我对 1 到 10 之间的整数的 200 个点有 10 个观察值 mysample sample rep seq 1 10 20 10 我想用条形图绘制它 barplot table mysample barplot https i s

随机推荐

  • 在 Outlook 中生成新消息并显示为模式

    我需要从应用程序使用 Outlook 生成并发送消息 邮件表单应显示为模式 主要是因为我生成附件 并且当用户发送电子邮件 或丢弃它 时应将其删除 我的问题是当我将 Outlook 对话框设置为模式 MailIt Display True 时
  • 如何在Javascript文件(.js)中使用Python Flask? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 当 Javascript 代码位于 HTML 文件中时 这不是问题 但是 当我将 script 标签的内容移至 js 文件以便在其他
  • 安装路径不可写R,无法更新包

    我正在尝试使用他们网站上的代码将 Bioconductor 安装到 R 中 当我输入代码 见下文 时 我收到一条错误消息 指出某些软件包无法更新 安装路径不可写 gt try http if https URLs are not suppo
  • 重命名 Kubernetes 中的部署

    If I do kubectl get deployments I get kubectl get deployments NAME DESIRED CURRENT UP TO DATE AVAILABLE AGE analytics re
  • 如何在 Django-rest-framework 序列化器中的关系模型中获取额外的列?

    I have Category and Article model Article有外键引用Category in my serializer由于 我可以在类别模型中获取名称列 str 方法 但我怎样才能得到其他列Category mode
  • 使用 Symfony2 / Symfony3 中的 FOSUserBundle 删除/替换用户名字段为电子邮件

    我只想使用电子邮件作为登录方式 我不想使用用户名 symfony2 symfony3 和 FOSUserbundle 可以吗 我在这里读到http groups google com group symfony2 browse thread
  • 不要扩展 React.Component

    创建 React 组件的 es6 语法是export default class ExampleComponent extends React Component 但是它仍然有效export default class ExampleCom
  • 如何为pytest命令指定几个标记

    Reading http doc pytest org en latest example markers html http doc pytest org en latest example markers html我看到了基于标记包含或
  • 限制 Java 中 HashMap 的最大大小

    我想限制 a 的最大尺寸HashMap对我正在实现的各种哈希算法进行度量 我查看了其中之一的负载因子HashMap的重载构造函数 HashMap int initialCapacity float loadFactor 我尝试在构造函数中将
  • 无法在 logback.xml 中使用 Spring 属性占位符

    我有一个使用 Logback 的 Spring Boot 控制台应用程序 所有属性 对于应用程序以及 Logback 都被外部化到类路径中的标准 application properties 文件中 这些属性可以在应用程序本身中很好地获取
  • 如何导入和使用.so文件

    请给我示例 代码 如何将 gccgo 生成的 so 文件导入到 main go 中 Go 尚不支持动态代码加载 即插件 有计划在未来添加支持 但目前尚未确定时间表 https docs google com document d 1nr T
  • 如何查看 numpy 广播对象?

    根据文档 http docs scipy org doc numpy user basics broadcasting html gt gt gt a np array 1 0 2 0 3 0 gt gt gt b np array 2 0
  • 正则表达式用于识别 Guid 后跟数字

    我有一个可以识别 Guid 的正则表达式 string pattern 0 9a fA F 8 0 9a fA F 4 0 9a fA F 4 0 9a fA F 4 0 9a fA F 12 我有一个可以识别数字的正则表达式 string
  • 如何在 Xamarin.Forms 中获取客户端设备的 MAC 地址?

    在我的客户端服务器解决方案中 我需要运行 Xamarin Forms 应用程序的前端设备的 MAC 地址 目前我只有一个条目 用户应该在其中输入运行应用程序的设备的 MAC 地址 主界面 我已经搜索过这个主题 发现iOS和Android对于
  • 如何将 AngularJS 变量传递给 Javascript?

    我正在构建一个带有模态窗口的 AngularJS Web 应用程序 在模态窗口中 我可以显示 JQuery Flot 实时图表 类似于 http people iola dk olau flot examples realtime html
  • 获取两个 NSDate 之间的准确时差?

    有什么办法可以找出两者之间的准确差异NSDate 我已经找到了解决方案 但它们不够准确 我需要考虑夏令时 不同月份有不同天数等事实 诸如 60 60 24 等计算分钟 小时和天的简单计算不会将它们考虑在内 假设我需要计算出现在时间之间的差异
  • 使用字典的 Protobuf-net 对象引用反序列化:引用跟踪对象在反序列化期间更改了引用

    我在尝试使用 protobuf net 序列化 反序列化复杂对象图时遇到一些问题 我正在开发一个遗留应用程序 我们正在使用 Net Remoting 将 GUI 客户端连接到 C 服务 由于使用默认值的对象图的序列化大小 我们发现海外用户的
  • 上传1GB或以上的文件

    上传大于 1 GB 的文件的最佳方式是什么 当前情况 我们正在使用 Flask 来部署网络服务器 我们必须上传大于 1 GB 的文件 以前我们只上传了几MB的文件 所以 这不是问题 但现在对于大于 1 GB 的文件 旧的上传方法不再可行 服
  • Qt 中带有进度回调的 CopyFileEx

    有人能给我一个在 Qt 中使用 CopyFileEx 和进度回调的工作示例吗 我发现了一些划痕并尝试合并它但没有成功 我什至无法将 CopyProgressRoutine 函数作为 CopyFileEx 的参数传递 因为我无法声明指向该函数
  • 加载 data.table 对象后直接使用 get(data.table) 生成新变量

    我正在尝试在 data table 中生成一个新变量 我生成 保存并再次加载该变量 加载后 我通过 get 间接寻址 data table 只要我之前不直接寻址它以创建变量 这对于生成新变量就不起作用 可能是某种环境问题 Generate