如何从 R apply 函数访问全局/外部范围变量?

2024-02-29

我似乎无法使 apply 函数访问/修改在外部声明的变量...给出了什么?

    x = data.frame(age=c(11,12,13), weight=c(100,105,110))
    x

    testme <- function(df) {
        i <- 0
        apply(df, 1, function(x) {
            age <- x[1]
            weight <- x[2]
            cat(sprintf("age=%d, weight=%d\n", age, weight))
            i <- i+1   #this could not access the i variable in outer scope
            z <- z+1   #this could not access the global variable
        })
        cat(sprintf("i=%d\n", i))
        i
    }

    z <- 0
    y <- testme(x)
    cat(sprintf("y=%d, z=%d\n", y, z))

Results:

    age=11, weight=100
    age=12, weight=105
    age=13, weight=110
    i=0
    y=0, z=0

使用<<-运算符,您可以写入外部作用域中的变量:

x = data.frame(age=c(11,12,13), weight=c(100,105,110))
x

testme <- function(df) {
    i <- 0
    apply(df, 1, function(x) {
        age <- x[1]
        weight <- x[2]
        cat(sprintf("age=%d, weight=%d\n", age, weight))
        i <<- i+1   #this could not access the i variable in outer scope
        z <<- z+1   #this could not access the global variable
    })
    cat(sprintf("i=%d\n", i))
    i
}

z <- 0
y <- testme(x)
cat(sprintf("y=%d, z=%d\n", y, z))

结果在这里:

age=11, weight=100
age=12, weight=105
age=13, weight=110
i=3
y=3, z=3

请注意,使用<<-是危险的,因为你打破了范围。仅在确实必要时才执行此操作,并且如果这样做,请清楚地记录该行为(至少在较大的脚本中)

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

如何从 R apply 函数访问全局/外部范围变量? 的相关文章

  • R 中添加额外常量的累积乘法

    我是 R 新手 正在努力解决以下累积乘法与添加额外常量的组合 我希望在数据框中实现以下目标 Variable X Variable Y Variable Z X1 Y1 Y1 X1 Z1 X2 Y2 Z1 Y2 X2 Z2 X3 Y3 Z2
  • 删除特定值之前和之后的特定值的运行

    我有一个包含几列的数据框 基于 activity 列 我想删除特定值 pt 的整个连续运行 但前提是它们紧邻 outside 运行之前或之后发生 在下面的简化数据中 有一次运行的 activity 为 outside 并且前后都有大块 pt
  • 修改 SIR 模型以包含随机性

    我正在尝试通过将真实流行曲线与随机 SIR 模型的模拟进行比较来建立一种估计传染病参数的方法 为了构建随机 SIR 模型 我使用 deSolve 包 而不是使用固定参数值 我想从以原始参数值为中心的泊松分布中绘制每个时间点方程中使用的参数值
  • 条形图中的并排条形

    这是基于这个帖子 https stackoverflow com questions 26913954 make barplot in ggplot2 with summary statistics noredirect 1 comment
  • R 中的县等值区域地图的阿拉斯加和夏威夷格式不正确

    我正在尝试将美国的 Choropleth 地图格式化为特定颜色 不幸的是 当使用scale fill brewer改变颜色 只有 48 个州这样做 夏威夷和阿拉斯加没有 是否可以知道我是否也可以将着色应用到夏威夷和阿拉斯加 library
  • 从 github 获取 R 脚本以供全局会话使用,在包装函数内?

    我可以获取 github 上保存的 R 脚本 使用 原始 文本链接 如下所示 load package require RCurl check 1 ls character 0 read script lines from website
  • 因子不因式分解绘图的 x 轴标签

    我有一个从 Excel 导入的数据框 其中一列的格式为 dates Oct 17 Nov 17 Dec 17 Jan 18 Feb 18 Mar 18 Apr 18 May 18 Jun 18 Jul 18 Aug 18 所有其他列都只是数
  • R中提取电话号码问题

    有这样的数字 ll lt readLines textConnection 412 573 7777 opt 1 563 785 1655 x1797 567 523 1534 x7753 567 483 2119 x 477 451 89
  • 根据上一行(data.table)中的值计算单元格中的值的快速方法

    假设我有以下数据集dt和一个常数constant dt lt structure list var1 c 92186 7470607738 19163 5035325072 18178 8396858014 9844 67882723287
  • 根据其他列设置列的值

    我有一个数据框 如下所示 ID Score New ID New Score 123 5 456 456 1 789 789 0 123 我想为 New ID 列提供相同的分数 只是顺序不同 期望的结果 ID Score New ID Ne
  • 如何使用 R 中的 ggplot 在单独的字段中绘制日期和时间

    我有以下数据框 head d c 1 2 7 10 date hour total sess 2 2014 04 06 00 115 3 2014 04 07 01 3 4 2014 04 07 16 3 5 2014 04 07 21 1
  • R:将多列转换为单列[重复]

    这个问题在这里已经有答案了 我有一个看起来像这样的数据框 ID week1 t week1 a week2 t week2 a 1 12 22 17 4 1 15 32 18 5 1 24 12 29 6 2 45 11
  • 有没有办法“source()”并在错误后继续?

    我有一个大型 R 脚本 其中包含 142 个小部分 如果某一部分因错误而失败 我希望脚本继续而不是停止 这些部分不一定相互依赖 但有些部分确实相互依赖 如果中间的一个失败了也没关系 我不想在这个脚本中加入try 来电 而且我不想将文件分成许
  • 删除重复行并计算 R 中数据帧的平均值

    我提供了一个我正在处理 gt 1 000 列和 gt 200 行的大型数据框的小示例 我想让每列的每个重复行成为单行而不是两行 同时取与第 1 列相关的每个值的平均值 平均值的列是第 6 8 列等 Col1 Col2 Col3 Col4 C
  • 如何将 dput() 的输出加载到对象中?

    例如我有这样的代码 structure list mpg c 21 21 22 8 21 4 18 7 18 1 14 3 24 4 22 8 19 2 17 8 16 4 17 3 15 2 10 4 10 4 14 7 32 4 30
  • 控制绘图中 x 轴上出现哪些刻度线/标签?

    我想控制 X 轴上显示的刻度线 以下代码将刻度线放置在 5 的序列中 位于 5 10 15 30 library plotly df lt data frame x 1 30 y sample 100 300 size 30 replace
  • R:在组上应用函数

    我希望将函数应用于数据框 然后将该函数的结果存储在数据框中的新列中 这是我的数据框 tradeData 的示例 Login AL Diff a 1 0 a 1 0 a 1 0 a 0 1 a 0 0 a 0 0 a 0 0 a 1 1 a
  • 连接系统 R 中的两个或多个数据帧

    我的问题是如何在 R 系统中连接两个或多个数据帧 例如 我有两个数据框 first x y z 1 3 2 4 2 4 5 7 3 5 6 8 second x y z 1 1 1 1 2 4 5 7 我需要这个 x y z 1 3 2 4
  • R 笔记本:opts_chunk 没有效果

    我正在开发我的第一台 R 笔记本 除了一个问题之外 它运行得很好 我想成为我内联输出的数字 r realbignumber 以逗号作为分隔符且最多 2 位小数 123 456 789 12 为了实现这一目标 我在文档的开头添加了一个块 其中
  • 将 R 包函数导出到 R 包内的并行集群

    有一些功能 比如function1 在我正在开发的 R 包中 它依赖于辅助函数 例如h function1 and h function2 在我的包裹里 我正在并行化重复调用function1在我的包中的另一个函数中 目前 在我的包中我正在

随机推荐

  • RGDAL 无法安装

    我无法在 R 中安装 RGDAL 我使用的是 Ubuntu 12 04 configure error gdal config not found or not executable ERROR configuration failed f
  • 关于 REST 响应和 XMLElement

    我有下面一个需要在代码中创建的 REST 响应
  • Page_Load 未在 UserControl 中触发

    我在类库中用 C 创建了一个类 并将此控件添加到了 default aspx 但我的代码没有触发 page load 事件 这是代码 我究竟做错了什么 页面已加载 但页面上未显示标签 我已将控件正确添加到页面 没有任何错误 我已经在其中添加
  • 同步集合包装器工厂方法如何“拥有”传递给它的对象?

    Brian Goetz 在 Java Concurrency in Practice 一书中说 传递给类的构造函数和方法的对象是不拥有由类本身 是因为他们是从外面来的 班级无法控制他们吗 他接着说 如果方法被明确设计为转移传入对象的所有权
  • C++ 隐式参数的顺序: this 和返回的对象,哪个在先?

    在 C 中 成员函数最多可以有 2 个隐式参数 this指针和返回对象的地址 它们位于显式参数之前 但是 哪个先走 我特别对 Android NDK 基于 gcc ARM 中发生的情况感兴趣 Example class MyClass pu
  • Java Kafka adminClient 主题配置。配置值被覆盖

    在尝试使用 java kafka adminClient 配置新创建的 kafka 主题时 值被覆盖 我尝试使用控制台命令设置相同的主题配置 并且它有效 不幸的是 当我尝试通过 Java 代码时 一些值发生冲突并被覆盖 ConfigReso
  • Celery 在任何更改时自动重新加载

    当模块发生更改时 我可以使 celery 自动重新加载CELERY IMPORTS in settings py 我尝试让母模块检测子模块的变化 但它没有检测到子模块的变化 这让我明白检测不是由 celery 递归完成的 我在文档中搜索了它
  • 在android中使用内容提供程序获取联系号码

    我按照本教程学习了内容提供商的基础知识 http www vogella de articles AndroidSQLite article html http www vogella de articles AndroidSQLite a
  • 使用更改 django 模板中表单字段的名称属性

    我有表单字段 表单 项目 这将呈现为
  • 数据类型映射参数中的键只能使用列名

    我已经使用 dask read sql table 从 Oracle 数据库成功引入了一张表 但是 当我尝试引入另一个表时 出现此错误KeyError 只有列名可以用作数据类型映射参数中的键 我已经检查了我的连接字符串和架构 所有这些都很好
  • 转换为日期格式 dd/mm/yyyy

    我有以下日期 2010 04 19 18 31 27 我想将此日期转换为日 月 年 format 您可以使用正则表达式或一些手动字符串摆弄 但我想我更喜欢 date d m Y strtotime str
  • keras自定义损失纯python(没有keras后端)

    我目前正在编写一个用于图像压缩的自动编码器 我想使用用纯 python 编写的自定义损失函数 即不使用 keras 后端函数 这是否可能 如果可能的话 如何实现 如果可能的话 我将非常感谢您提供一个最小工作示例 MWE 请查看这个 MWE
  • AWS CloudFormation:在嵌套堆栈之间传递值

    更多 AWS 问题 好的 我们的想法是一个主模板调用所有嵌套堆栈 在此处的帮助下 我弄清楚了如何将参数从主服务器传递到嵌套堆栈 现在我试图弄清楚如何将值从嵌套堆栈传递到嵌套堆栈 我认为这应该通过出口和进口来完成 但我认为我的做法不太正确 我
  • Cesium JS 椭球切平面计算

    Problem 我对铯如何计算大地测量和地心表面法线有点困惑 根据计算法线生成的平面实际上并不与给定点的椭球面相切 而且 根据大地表面法线创建的平面与根据地心表面法线生成的平面完全相同 示例以及为什么我需要这个 In this 沙堡 htt
  • 使用关键字参数 end=' ' 获取 print 的语法错误

    我有这个 python 脚本需要运行gdal retile py 但我在这一行得到一个例外 if Verbose print Building internam Index for d tile s len inputTiles end T
  • Oracle 的 DBMS_ASSERT 的 Sql Server 等效项是什么?

    数据库管理系统 断言是Oracle中防止SQL注入攻击的关键之一 我尝试了粗略搜索 是否有 SQL Server 2005 2008 等效于此功能 我正在寻找一个特定的实现 它具有 DBMS ASSERT 的所有相应 Oracle 包成员的
  • 如何使用 symfony dom 爬虫将 html 表解析为数组

    我有 html 表 我想从该表创建数组 html table tr td satu td td dua td tr tr td tiga td td empat td tr table 我的数组必须是这样的 array array satu
  • SAPI 或(文本到语音)的同步问题....... C#

    我正在开发一个项目 它将讲述浏览网页的内容 浏览器是我使用 WebControl 制作的 我正在使用 SAPI 作为语音引擎 我想在通过 SpVoice speak 阅读该内容时突出显示网页中的该行 但问题是 如果我以异步方式使用此发言方法
  • 对于已授予所有权限的用户,CREATE 命令被拒绝

    我正在尝试设置 MySQL 复制从属服务器 但运行起来非常困难LOAD DATA FROM MASTER 是的 我知道它已被弃用 但我正在运行 MySQL 5 1 目前这不是我的问题 由于某种原因 MySQL 不断告诉我CREATE命令被拒
  • 如何从 R apply 函数访问全局/外部范围变量?

    我似乎无法使 apply 函数访问 修改在外部声明的变量 给出了什么 x data frame age c 11 12 13 weight c 100 105 110 x testme lt function df i lt 0 apply