将函数应用于 data.table 中的每个指定列并按引用更新

2023-12-01

我有一个 data.table,我想用它对某些列执行相同的操作。这些列的名称在字符向量中给出。在这个特定的示例中,我想将所有这些列乘以 -1。

一些玩具数据和指定相关列的向量:

library(data.table)
dt <- data.table(a = 1:3, b = 1:3, d = 1:3)
cols <- c("a", "b")

现在我正在这样做,循环遍历字符向量:

for (col in 1:length(cols)) {
   dt[ , eval(parse(text = paste0(cols[col], ":=-1*", cols[col])))]
}

有没有办法直接做到这一点而不需要for循环?


这似乎有效:

dt[ , (cols) := lapply(.SD, "*", -1), .SDcols = cols]

结果是

    a  b d
1: -1 -1 1
2: -2 -2 2
3: -3 -3 3

这里有一些技巧:

  • 因为里面有括号(cols) :=,结果分配给指定的列cols,而不是一些名为“cols”的新变量。
  • .SDcols告诉调用我们只查看这些列,并允许我们使用.SD, the S的子集D与这些列关联的 ata。
  • lapply(.SD, ...)运行于.SD,这是一个列列表(像所有 data.frames 和 data.tables 一样)。lapply返回一个列表,所以最后j好像cols := list(...).

EDIT:正如 @Arun 提到的,这是另一种可能更快的方法:

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

将函数应用于 data.table 中的每个指定列并按引用更新 的相关文章

  • 带有 geom_errorbar 的position_dodge

    我有以下代码 require ggplot2 pd lt position dodge 0 3 ggplot dt aes x Time y OR colour Group geom errorbar aes ymin CI lower y
  • Openxlsx 多次验证损坏输出文件

    我正在尝试添加多个验证并将公式添加到 Excel 文件 这是我使用的代码 library openxlsx fileTemplate lt New01 xlsx wbTemplate lt loadWorkbook fileTemplate
  • 在 R 中使用 gsub 删除尾随空格[重复]

    这个问题在这里已经有答案了 有没有人有一个技巧可以用 gsub 删除变量上的尾随空格 以下是我的数据示例 正如您所看到的 我在变量中同时包含尾随空格和嵌入空格 county lt c mississippi mississippi cany
  • R dplyr过滤多列上的字符串条件

    我有一个 df 例如 df lt read table text v1 v2 v3 v4 v5 1 A B X C 2 A B C X 3 A C C C 4 B D V A 5 B Z Z D header T 如果变量 v2 到 v5
  • 根据另一个向量替换向量中的值

    我想替换向量中的值 x 与另一个向量 y 陷阱 22 方法需要是动态的 以适应向量中不同数量的 级别 x 例如 考虑向量x x lt sample c 1 2 3 4 5 100 replace TRUE gt x 1 2 4 1 1 3
  • 绘制具有数据子集的图层时,因子水平的顺序会发生变化

    我试图控制图例中项目的顺序ggplot2我查找了其他一些类似的问题 并发现了如何更改我正在绘制的因子变量的水平顺序 我正在绘制 12 月 1 月 7 月和 6 月 4 个月的数据 如果我只对所有月份执行一个绘图命令 它会按预期工作 图例中排
  • R:为什么 kable 不在 for 循环内打印?

    我正在使用 rmarkdown 和 Latex 编写报告 我需要使用打印一组表格knitr kable 但在 for 循环内时不会打印 这是我的代码 title project title author Mr Author date 201
  • 计算 R 中数据帧的每一行中特定值的连续出现次数

    我有一个data frame许多位置 这么多行 的变量的每月值 我想计算值为零的连续月份 即连续单元格 的数量 如果只是从左到右阅读 这很容易 但增加的复杂性是年底与年初是连续的 例如 在下面的缩短示例数据集中 用季节而不是月份 位置 1
  • ggplot堆叠条 - 隐藏标签但保留标签位置

    我在 ggplot 中有一个堆积条形图 其中 geom text 标签位于每个条形的中心 我想隐藏小条上的标签 以便图表看起来不会过于拥挤 我可以使用下面的代码来完成此操作 但它会弄乱标签的位置 正如您在下面的链接图片中看到的那样 它们不再
  • 如何融合颜色和形状?

    当我有一个超过 6 个值的变量时 我的麻烦就开始了 因为这是 ggplot2 中 scale shape 函数的当前最大值 由于这个问题 我尝试使用另一个变量来解决这个问题 我只是将原始变量的长度包裹起来 这是我的示例代码 dataf lt
  • 如何在 R 中的另一个函数中使用 `sink` 函数?

    我有一个函数fun依赖于外部函数external 即来自某个包 我如何收集来自的所有警告external在字符向量中 这是一个最小的设置 External function from another package external lt
  • R 中的 as.numeric 有什么问题? [复制]

    这个问题在这里已经有答案了 gt X864291X8X74 1 8 0000000000 9 0000000000 10 0000000000 6 0000000000 8 0000000000 10 Levels 0 0000000000
  • R Data.Table 创建带有条件的变量

    我需要在下面的数据集中创建一个新变量 A X a 1 b 2 c 3 d 4 e 5 f 6 g 7 h 8 i 9 j 10 The newvar如果X等于 2 5 7 或 9 否则 newvar应该是 0 Code dt1 lt dat
  • 在 R 中按组检查重叠开始和结束时间

    我想检查数据的重叠 这是数据 ID lt c rep 1 3 rep 3 5 rep 4 4 rep 5 5 Begin lt c 0 2 5 3 7 8 7 25 25 10 15 17 20 1 NA 10 11 13 End lt c
  • 循环中的knitr模板和子文档

    圣诞节前我之前问过跨多个 knitr 文档的单一样式表 https stackoverflow com questions 20370584 single style sheet across multiple knitr document
  • R 中的转换会导致文档错误

    每当我运行此代码时 tm map 行都会给我警告消息 警告信息 在 tm map SimpleCorpus docs toSpace 中 转换删除文档 texts lt read csv Data fast food Domino s Do
  • 对于多项式,获取其所有极值并通过突出显示所有单调部分来绘制它

    有人问我这个有趣的问题 我认为值得将其发布在这里 因为 Stack Overflow 上还没有任何相关线程 假设我有长度为的多项式系数n vector pc 其中次数多项式n 1对于变量x可以以其原始形式表示 pc 1 pc 2 x pc
  • DataTable:通过 LINQ 或 LAMBDA 进行动态 Group By 表达式

    我有一个数据表 我想在其中对未指定数量的字段进行分组 发生这种情况的原因是用户可以选择他想要分组的字段 所以 实际上 我将选择推入列表中 在这个选择上 我必须对我的数据表进行分组 想象一下这段代码 VB 或 C 都一样 public voi
  • 以 UTF8 而不是 UTF16 输出 DataTable XML

    我有一个 DataTable 我正在使用 WriteXML 创建一个 XML 文件 尽管我在以 UTF 16 编码导出它时遇到问题 并且似乎没有明显的方法来更改它 我了解 NET 在字符串内部使用 UTF 16 这是正确的吗 然后 我通过
  • 将 read.csv 与符号链接文件一起使用

    我正在尝试做什么 我的源文件非常大 我想避免将其复制到其他文件夹中 我决定创建一个指向大文件的符号链接并想使用read csv读取文件 文件夹结构 项目1 数据 源文件 csv 项目2 数据 别名到源文件 csv 什么地方出了错 读取源文件

随机推荐

  • Python datetime 和 pandas 对同一日期给出不同的时间戳

    from datetime import datetime import pandas as pd date 2020 02 07T16 05 16 000000000 Convert using datetime t1 datetime
  • 墨卡托投影稍微偏离

    我正在构建一个需要大量谷歌地图图像的项目 我将这些函数定义为在另一个自动收集图像的函数中使用 纬度变化很好 但我注意到经度略有偏差 这是近似墨卡托投影法的产物吗 我的印象是 除了接近极点之外 我使用的转换相当准确 import math i
  • 当鼠标悬停在 QComboBox 上时通过 QSS 设置 QComboBox 子控件向下箭头的样式

    我知道如何设计风格QComboBox当鼠标悬停时执行以下操作 pComboBox gt setStyleSheet pComboBox gt styleSheet QString QComboBox hover css style here
  • 在 REST Api 中建模对象继承

    问题 我有一个应用程序有一个User对象和一个Student目的 Some用户是学生 所有学生都是用户 在数据库 基于 django ORM 中 这表示为Student具有外键的表User table 我正在尝试创建一个 REST API
  • 如何查看libc版本?

    这个问题与为什么 pclose 提前返回 我想知道是什么版本libc用于交叉编译的可执行文件 如下所述 存在一些限制 使答案在检查特定 gcc 编译器的 glibc 版本不适用 一种建议的检查方法libc版本是使用gnu get libc
  • 如何在 VB.NET 中进行按位与运算?

    我想在 VB NET 中执行按位与运算 采用一个 Short 16 位 变量并将其与 0000000011111111 进行 与 运算 从而仅保留最低有效字节 8 个最低有效位 我该怎么做 0000000011111111 表示为 VB 十
  • 如何使用 JavaScript 交换屏幕上的元素

    我有多个 li 元素 my lis 在页面上 我想用 JavaScript 来调整它们 我正在使用 JQuery 怎么做 实际上并不太难 总体思路是 获取所有dom节点 洗牌 清空 ul 并插入打乱后的节点 var items my lis
  • jQuery GetJSON 安全问题。复制 URL 并粘贴到浏览器中

    我在 ASP 页面中使用 jQuery GetJSON 调用 它类似于以下代码 ajax url myUrl myPage aspx callback BookARoom dataType json 这实际上最终会在我的系统中预订房间 但问
  • 蒙特卡洛模拟运行速度明显慢于顺序模拟

    一般来说 我对并发和并行编程的概念很陌生 我正在尝试使用计算 Pi蒙特卡罗法这是我的源代码 include
  • 类型错误:float() 参数必须是字符串或数字,而不是 FastAPI 中的“PatientAttendance”

    我目前正在使用 FastAPI 构建 API 来部署我的逻辑回归模型 由于某种原因 当我测试模型时 我在服务器文档中收到上述错误 我的代码如下 app FastAPI class PatientAttendance BaseModel ap
  • Numpy argsort 不稳定

    最近我一直在尝试np argsort我发现了一些奇怪的事情 如果运行以下代码 您将得到结果 In 0 np argsort 3 16 Out 0 array 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 dty
  • angularjs:将过滤后的数组传递给指令

    我正在寻找一种将过滤后的数组传递给指令的方法 我尝试过以下方法
  • 从草书连续手写图像中提取字符图像

    I am trying to extract individual character as an image from below 我有一个 python 代码 它能够按顺序提取每一行和单词 但是 它无法识别和提取每个字符 下面是我正在使
  • 通过链接报告中的返回链接按钮返回原始报告,并在主报告中使用多选参数

    我正在处理 ssrs 报告 我有一份总结和一份详细报告 详细报告链接到摘要报告 现在用户希望在详细报告中具有 返回摘要报告 链接 我的主要问题是我在摘要报告中有多选参数 如果我有单一选择参数 我就知道解决方案 在这种情况下 我可以创建一个文
  • “go run -gcflags -m xxx.go”的输出是什么意思

    尝试检查 go 程序中局部变量是否分配在堆或堆栈上 并且无法确定 go 的 gc 的某些输出的含义 Code 变量 堆 stack go variable heap stack learn run with go run gcflags m
  • nginx codeigniter 502 错误网关

    nginx的配置如下 server listen 80 server name www example com root home wwwroot example com index index php index html index h
  • 如何在C#中拦截每个尝试使用API​​函数?

    我需要阻止计算机上的任何屏幕捕获软件进行屏幕截图 由于它们都在标准 API 函数上工作 我想我可以监视和阻止它们 我需要使用 C 我所发现的只是如何在某个程序 屏幕捕获程序 中监视和阻止它们 他们在程序中寻找一个函数 然后将其地址更改为我的
  • 底层提供者在开放实体框架上失败

    我正在网络应用程序中取消实体框架 早些时候一切都工作正常 但后来我从 Sql Server 中删除了数据库 之后 每当我运行该应用程序时 我都会收到以下异常 The underlying provider failed on open en
  • Numpy 数组切片

    我有一个一维 numpy 数组和一些偏移 长度值 我想从该数组中提取属于偏移量 偏移量 长度范围内的所有条目 然后将其用于从原始数组构建一个新的 简化 数组 该数组仅包含由偏移量 长度对选取的值 对于单个偏移 长度对 这对于标准数组切片来说
  • 将函数应用于 data.table 中的每个指定列并按引用更新

    我有一个 data table 我想用它对某些列执行相同的操作 这些列的名称在字符向量中给出 在这个特定的示例中 我想将所有这些列乘以 1 一些玩具数据和指定相关列的向量 library data table dt lt data tabl