在外部定义的函数上使用 lapply

2023-12-06

这个问题与R - 将固定列传递给 data.table 中的 lapply 函数 and 按组和列的加权平均值,但又有些不同。

我希望有一个固定列与同一列中的所有其他列进行交互data.table。一个简单的例子来说明:

DT <- data.table(y = rnorm(10), x1 = rnorm(10), x2 = rnorm(10))
DT[, lapply(c('x1', 'x2'), function(x) get(x) * y)]

现在假设该操作比乘法复杂得多,因此我想在范围之外定义一个独立的函数data.table:

fun <- function(x) {
    return(get(x) * y)
}
DT[, lapply(c('x1', 'x2'), fun)]
Error in get(x) : object 'x1' not found

显然,变量作用域存在问题,因为函数在外部定义data.table看不到里面的变量。有没有什么巧妙的技巧可以在外部定义函数data.table并且仍然可以使用lapply?


如果你试图通过字符串和命名变量来组合引用,你就会陷入困境。 (也可以通过引用函数内的“全局”变量)

最简单的方法是定义在哪里get在寻找x, (and y)

这是重写的函数,以便您可以告诉它要查找的位置。

fun <- function(x,y,wherex=parent.frame(),wherey=parent.frame()) {
    return(get(x,wherex) * get(y,wherey))
}

data.table检查中存在的名称j,并且仅加载所需的列。

在您的示例中,您不使用列名称,因此没有任何可用的内容。

如果你包括.SD在表达式中j,它将加载到所有列中。您可以使用.SD as the wherex/wherey新定义的参数fun

DT[, lapply(c('x1', 'x2'), fun, y = 'y' , wherex=.SD, wherey=.SD)]
 #              V1         V2
 #  1: -0.27871200  1.1943170
 #  2: -0.68843421 -1.5719016
 #  3:  1.06968681  2.8358612
 #  4:  0.21201412  1.0127712
 #  5:  0.05392450  0.2487873
 #  6:  0.04473767 -0.1644542
 #  7:  5.37851536  2.9710708
 #  8:  0.23653388  0.9506559
 #  9:  1.96364756 -1.4662968
 # 10: -0.02458077 -0.1197023

请注意,您实际上并不需要将其包含在[.data.table

results <- setDT(lapply(c('x1','x2'), fun, y='y', wherex=DT,wherey=DT))

将返回相同的结果。

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

在外部定义的函数上使用 lapply 的相关文章

  • 在 R 中绘制 Likert 变量的堆积条形图

    假设我有一个如下所示的数据框 P Q1 Q2 1 1 4 1 2 2 3 4 3 1 1 4 其中的列告诉我哪个人相应地回答了问题 q1 q2 中的哪一个 这些问题需要按照 4 分李克特量表进行回答 例如 批准 表示 1 稍微批准 表示 2
  • pyomo + 网状错误 6 句柄无效

    我正在尝试运行pyomo优化 我收到错误消息 Error 6 The handle is invalid 不知道如何解释它 环顾四周似乎与特权有关 但我不太明白 在下面找到完整的错误跟踪以及重现它的玩具示例 完整的错误跟踪 py run f
  • R 中的列乘以子字符串

    假设我有一个数据框 其中包含多个组件及其在多个列中列出的属性 并且我想对这些列运行多个函数 我的方法是尝试将其基于每个列标题中的子字符串 但我无法弄清楚如何做到这一点 下面是数据框的示例 Basket F Type 1 F Qty 1 F
  • ggplot2 geom_密度和geom_histogram在一个图中

    如何制作一个所有条形加起来为 1 的直方图 并在适合的上方添加一个密度层 set seed 1234 df lt data frame sex factor rep c F M each 200 weight round c rnorm 2
  • 将数据框中重叠的范围合并到唯一的组中

    我有一个 n 行 3 的数据框 df lt data frame start c 178 400 983 1932 33653 end c 5025 5025 5535 6918 38197 group c 1 1 2 2 3 df sta
  • 使用 Shiny 发布平行坐标图表时出现“错误:路径[1]="”:没有这样的文件或目录”

    我有一个似乎很常见但我还没有找到解决方案的问题 当尝试使用 rCharts Parcoords 发布 Web 应用程序时 出现以下错误 错误 路径 1 没有这样的文件或目录 奇怪的是 该应用程序在我的笔记本电脑上运行得很好 下面是我正在使用
  • 更改闪亮 R 中的默认浏览器

    我在 RStudio 中使用 01 hello 虽然在 IE 中默认打开程序时它不会显示直方图 但即使在 Chrome 中 滑块也不起作用 我无法滑动条形图并看到直方图中的变化 如何更改 R 中的默认浏览器 以便闪亮启动 Chrome 而不
  • 如何仅删除单括号并保留配对的括号

    你好 我亲爱的老师 R 用户朋友们 我最近开始认真学习正则表达式 最近我遇到了一种情况 我们只想保留配对括号 并省略未配对的 这是我的样本数据 structure list t1 c Book Pg 1 Website Online Jou
  • 如何从 R keras 中的类似生成器的数据中评估()和预测()

    我有以下代码 数据集可以下载here https www dropbox com s qjt5o31oyqj10m8 data tar gz dl 0 or here https www kaggle com c dogs vs cats
  • 如何在 R 中匹配多个 ggplot2 图中的调色板?

    自从被问到这个问题以来已经有一段时间了 但我知道一个事实 我很快就会提取新数据 我想弄清楚如何用这种技术来绘制它 看起来评论和答案中的人知道如何做到这一点 但我无法完全弄清楚所给我的内容 还有人想尝试一下吗 我正在尝试使用具有多个级别的因子
  • 为什么 R 更新后 sim_slopes() 中会出现此错误?

    我正在尝试使用 交互 包来创建简单斜率的约翰逊 尼曼图 但是 当尝试运行 sim slopes 函数时 出现以下错误 直到我将R更新到4 2 2 我才没有遇到这个问题 我使用的是 macOS Ventura 13 1 Error class
  • 如何从 R 中的 txt 文件读取矩阵?

    我有一个带有矩阵的txt文件 Matrix txt 重要 数字之间没有空格 0100 1001 1100 我想在 R 中将其作为矩阵读取 我该怎么做 我尝试使用 as matrix read table Matrix txt sep 但失败
  • R“错误:“}”中出现意外的“}”[重复]

    这个问题在这里已经有答案了 我有一个字符串变量 对于缺少数据的情况 它具有 空值 我想将 空值 重新编码为缺失 而不是说 空值 我正在尝试编写一个循环来删除这些 空值 条目 但我不断收到错误 错误 中出现意外的 for row in dat
  • 删除极坐标图边缘的多余空间和圆环

    我有一个极坐标图ggplot2我已经非常接近完成 相当简单的情节 我已经能够在删除矩形边框方面获得帮助 但我不需要删除最后一个范围轮廓与带有方位角标签的绘图周围的环之间的额外空间 我希望该图的边界为 15 000 而不是 15 214 我编
  • 如何在将两根柱子保持在一起的同时熔化柱子?

    我有这种宽格式的数据 我想将其转换为长格式 Cond Construct Line Plant Tube shoot weight shoot Tube root weight root 1 Standard NA NA 2 199 95
  • R:使用 tidyverse 将 NA 替换为 df 中的其他变量

    我想使用 tidyverse 替换 df 中的 NA 值 我想要的值应该从其他列中计算出来 input ID X1 X2 X3 A 0 96 NA 0 97 B 1 00 NA 1 01 C 0 98 0 03 NA A 1 00 NA 1
  • 使用 template.docx 从 Shiny App 编织 Word 文档

    我正在尝试使用 template docx 文件从闪亮的应用程序编写一个 Word 文档 我收到以下错误消息 pandoc exe template docx openBinaryFile 不存在 没有这样的文件或目录 以下 3 个文件当前
  • 如何修复 R 中 Kaplan Meier 图的风险表计算错误

    以下是一个数据帧 其中 6 个参与者中的每一个都有唯一的 record ID 我想绘制一个生存分析图 其中包含感兴趣事件的复发以及在时间间隔 tstart 到 tstop 内 暴露 药物剂量 数值变量 的时间依赖性协变量 每个参与者的最大
  • 麦当劳 omega:R 中的警告

    我正在计算几种不同尺度的欧米茄 并在 R 中使用不同的 omega 函数获取不同比例的不同警告消息 我的问题是如何解释这些警告以及报告检索到的 omega 统计数据是否安全 当我使用 从 alpha 到 omega 内部一致性估计普遍问题的
  • 在 Shiny 中的用户会话之间共享反应数据集

    我有一个相当大的反应数据集 该数据集是通过轮询文件然后按预定义的时间间隔读取该文件而派生的 数据更新频繁 需要不断重新加载 诚然 重新加载可以增量完成并附加到 R 中的现有对象 但事实并非如此 然而目前 尽管会话中的数据相同 但此操作是针对

随机推荐

  • 自动为 Woocommerce 上购买的产品设置特定属性术语值

    我想在下订单并处于 暂停 状态时自动向订购的产品添加特定的属性值 之前设置 我销售独特的产品 并且我设置了 STOCK 属性和 Out Of Stock 缺货 值 当下订单并处于 暂停 状态时 我想自动更改订购产品的特色状态 并向其添加缺货
  • WCF 捕获异常“服务器未提供有意义的回复..”

    服务器调用后 我的客户端捕获异常并显示以下消息 服务器没有提供有意义的回复 这可能是由合同不匹配 会话过早关闭或内部服务器错误引起的 另外 请注意我尝试了配置WCF 服务器没有提供有意义的回复 但还是没用 请注意 我将服务调试到最后 并且数
  • Spring Boot 2:动态刷新属性不起作用

    我已经按照这个官方教程进行操作了入门集中配置使用 Spring Boot 2 0 0 RELEASE 和 Spring Cloud Finchley M8 但动态刷新属性 无需重新启动 不起作用 经过一些调试 我注意到在ContextRef
  • 使用 Backbone.js 的投票系统

    我有一个Book具有属性的模型upVotes Book可以从数据库 MongoDB 查询 修改实例 然后保存 如果用户对一本书进行投票 我会更新upVotes计数 并将整个模型保存回服务器 问题是 如果其他人在实例加载时间和保存实例时间之间
  • spring:escapeBody 导致无效的 JSON

    我试图转义 JSP 中的字符串以在 AJAX 调用上返回有效的 JSON 但是 spring escapeBody 标记未正确转义 JSON 的单引号 有效的 JSON 不应转义单引号 status success body
  • Spring数据中的@Transient不起作用

    I have Settlement entity Entity Table name settlement public class Settlement ManyToOne JoinColumn name subscription x p
  • 使用 Elmah 记录 WCF Web 服务的用户名

    我们正在使用描述的方法here使用 Elmah 记录我们的 Web 服务错误 这确实有效 但遗憾的是记录的用户名是空的 我们做了一些调试 发现在 ErrorHandler 中记录错误时HttpContext Current User具有正确
  • Windows Phone ApplicationBar BackgroundColor 属性样式 XamlParseException

    我的应用程序中有很多页面 我决定在 App Resources 中创建一个全局 ApplicationBar 样式 然而 当我尝试启动应用程序时 VS 给了我一个错误 The property BackgroundColor was not
  • 在 PHP 安装上启用 Mcrypt

    我使用 Apache 2 2 16 在 Windows 机器上安装了 PHP 5 2 14 通过 msi 安装 安装附带了 ext php mcrypt dll 和 libmcrypt dll 但当我取消注释时扩展名 php mcrypt
  • Sql PIVOT 和字符串连接聚合

    我想使用数据透视 SQL 查询来构造一个结果表 其中连接文本作为数据透视表的数据部分中的结果 即我使用简单的选择得到以下结果 Event Name Resource Type Resource Name Event 1 Resource T
  • web.xml 中使用 CharacterEncodingFilter 进行 Spring 编码

    stackoverflow com 上的编码 我的网站上的编码
  • 将 JXTable 与 RXTable 组合

    Problem 我想要的能力JXTable与 编辑时全选 行为RXTable 进行简单的覆盖就可以了 但是 RXTable 的双击功能不适用于 JXTable 当使用 按钮操作 模式时 这很好 但是当使用 F2 或双击 JXTable 中的
  • 为什么函数的地址会随着每次运行而改变?

    我正在努力将地址映射到其符号以进行调试 获取调用堆栈 MS dbghelp dll 可以从地址中识别符号 请参阅SymFromAddr MSDN 然而 它不起作用 我想知道这是如何工作的 因为地址似乎随着程序的每次运行而改变 include
  • 如何解释 CPU 窗口反汇编窗格中的列?

    There is a tool called the CPU window which I get pressing Ctrl Alt C that shows the disassembly of my code 内存地址左边的绿色箭头表
  • 突出显示和过滤 (gcc) 编译器消息

    我目前正在重构一个 C 项目 向我抛出大约 1000 个警告 有没有办法突出显示和过滤这些警告 例如 将所有索引警告设置为红色 未使用的警告设置为蓝色 以及其他一些警告 很可能有些IDE可以做到这一点 但这对我来说不是解决方案 This i
  • 找不到模块“minizlib”

    我对 React Native 还很陌生 我使用下面的代码在我的 Mac 上安装 React Native npm install react native g react native cli 我收到错误 npm ERR code MOD
  • 现代 Android 中的非合作 Thread.stop() 替代方案

    Thread stop 现已从现代 Android API 中删除 从https developer android com reference java lang Thread stop 用途广泛 of stop应替换为仅修改某些变量以指
  • 为什么 `i = ++i + 1` 是未指定的行为?

    请考虑以下 C 标准 ISO IEC 14882 2003 E 引文 第 5 节第 4 段 除非另有说明 顺序 个别操作数的评估 个体的运算符和子表达式 表达式和顺序 发生哪些副作用 是 未指定 53 之前之间 下一个序列指向标量 对象应有
  • Android 有没有好的图表库?

    我需要在我正在开发的 Android 应用程序中渲染和显示图表 目前是条形图 但以后可能需要更多类型 我环顾四周 似乎还没有任何真正优秀 成熟的 Android 图表库 你知道任何 编辑以添加一些要求的详细信息 条形图 水平条形图 双堆叠条
  • 在外部定义的函数上使用 lapply

    这个问题与R 将固定列传递给 data table 中的 lapply 函数 and 按组和列的加权平均值 但又有些不同 我希望有一个固定列与同一列中的所有其他列进行交互data table 一个简单的例子来说明 DT lt data ta