替换()与“[<-”?

2023-12-25

我最近偶然发现replace() and "[<-"。它们似乎具有相似的功能,例如"[<-"我可以做这样的事情:

        > x.tst <- array(1:6, c(2,3))
        > s.tst <- array(0, c(2,3))
        > s.tst
             [,1] [,2] [,3]
        [1,]    0    0    0
        [2,]    0    0    0
        > s.tst[1:3] <- 1
        > "[<-"(x.tst, s.tst==1, 0)
             [,1] [,2] [,3]
        [1,]    0    0    5
        [2,]    0    4    6
        > x.tst
             [,1] [,2] [,3]
        [1,]    1    3    5
        [2,]    2    4    6

有人可以帮助澄清差异吗?优点是什么replace vs "[<-"反之亦然?


它们基本上是完全相同的东西。如果你查看replace的源代码,你会看到:

function (x, list, values) 
{
    x[list] <- values
    x
}
<environment: namespace:base>

所以替换只不过是一个包装器[<- :

> replace(x.tst, s.tst==1, 0)
     [,1] [,2] [,3]
[1,]    0    0    5
[2,]    0    4    6

Using [<-如果您需要执行此操作一百万次,则可以加快速度,因为您将失去对包装函数的额外调用。但这确实是微不足道的,所以这是一个选择的问题。我会这样说replace()更具可读性

Btw, x.tst[s.tst==1] <- 0"[<-"(x.tst, s.tst==1, 0)。没有理由使用该构造,除非您想将结果保存在新的数据框中。

为了澄清,正如 @Andrie 指出的,两者都replace() and "[<-"(x.tst, s.tst==1, 0)您将获得整个 x.tst 的副本,其中相关值已更改。所以你可以把它放在一个新对象中。这与x.tst[s.tst==1] <- 0,您可以在其中更改 x.tst 本身的值。请注意,它不会节省内存,因为 R 会在进行操作之前在内部创建 x.tst 的副本。

计时结果:

> system.time(replicate(1e6, replace(x.tst, s.tst==1, 0)))
   user  system elapsed 
  12.73    0.03   12.78 

> system.time(replicate(1e6, "[<-"(x.tst, s.tst==1, 0)))
   user  system elapsed 
   6.42    0.02    6.44 

> system.time(replicate(1e6, x.tst[s.tst==1] <- 0))
   user  system elapsed 
   5.28    0.02    5.32 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

替换()与“[<-”? 的相关文章

  • RStudio 在临时目录中从 Rmarkdown 创建 PDF 文件

    我使用 RStudio 和 Rmarkdown 来创建报告 由于某种原因 使用 Knit 按钮会导致它仅在某个临时目录中创建 从命令输出来看 似乎 pandoc 本身被指示这样做 我觉得这很奇怪 usr lib rstudio bin pa
  • rmarkdown 中的内部链接不起作用

    我使用 rmarkdown 来渲染 pdf 文档 现在我想在文本中添加内部链接 在帮助页面中降价 http rmarkdown rstudio com authoring pandoc markdown html links 它说内部链接定
  • 将 data.frame 的列中的值替换为另一个 data.frame 中的值

    我的情况是 我有一个数据框 其中有一列填充了整数 1 到 6 我想用更具描述性的标签替换这些整数 这些标签在另一个充当 键 的数据框中提供 V1 V2 1 1 LABEL1 2 2 LABEL2 3 3 LABEL3 4 4 LABEL4
  • 在 mts 对象上使用 Apply 系列函数

    在 mts 对象上使用 apply 或 sapply 会在发送到函数时删除其时间序列属性 我应该如何在 mts 对象中的每个时间序列上应用相同的函数 带有 ts 输入和 ts 输出 并返回它 最好是 mts 我的意思是除了使用 for 循环
  • 在 for 循环中绘制的多个 ggplot2 绘图的网格

    作为一个新的 ggplot2 用户 我对可能性的数量感到有点迷失 并且很难在网上找到我认为简单问题的简单答案 我想在同一张纸上显示 ggplot2 的多个图 但知道这些图来自 for 循环 以下示例无法编译 仅用于说明 for i in c
  • profvis() 何时以及为何显示“源不可用”?

    我经常分析 R 代码 并大量使用 profvis 对于某些函数 浏览器窗口的上半部分会显示源代码 有时则不会 我不知道什么时候会出现这种情况 对我来说这似乎是随机的 有谁知道 profvis 何时以及为什么无法在顶部窗口中显示代码 发生这种
  • 在 Shiny 中使用 readlines(prompt = )

    我有一个代码 使用以下方式获取输入readlines prompt 功能 您能告诉我 Shiny 中的哪个输入函数足以将此代码适应 Shiny 应用程序吗 我需要一个交互功能 我无法使用简单的输入selectInput 因为我有很多read
  • R比例置信区间因子

    我正在尝试总结家庭调查的数据 因此我的大部分数据都是分类 因子 数据 我想用对某些问题的回答频率图来总结它 例如 回答某些问题的家庭百分比的条形图 误差线显示置信区间 我发现了这个很棒的教程 我认为它是我祈祷的答案 http www coo
  • udunits2 R 安装:找不到 udunits2.h

    我正在尝试在 R 中安装 udunits2 以满足对ggforce包裹 但是 安装程序在检查 udunits2 时始终失败 我已经尝试过中的说明this https stackoverflow com questions 47059517
  • Dplyr 多重滞后整齐评估?

    我试图在 dplyr 中使用尽可能少的代码来实现多个滞后 同时坚持整洁的评估 以下标准评估 SE 代码有效 if require dplyr install packages dplyr library dplyr a as tibble
  • r Shiny 中的 fileInput 函数没有响应

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

    我正在尝试使用从 R 中的 survreg 估计的参数生成逆威布尔分布 我的意思是 对于给定的概率 这将是在 MS Excel 中实现的小型模拟模型中的随机数 返回使用我的参数预计出现故障 的时间 我理解逆威布尔分布的一般形式是 X b l
  • R 条形图中的 X 轴

    我想问一个关于 barplot 轴的问题 首先请看我的数据 SerNo DOY Rain 1 350 0 2 351 0 3 352 0 4 353 0 5 354 0 6 355 0 7 356 0 8 357 0 9 358 0 10
  • 如何在 R 地图库中绘制正确的颜色

    我正在尝试使用 R 地图库为特定国家绘制特定颜色 我可以填写颜色 但它们与各自的国家 地区没有正确关联 我想知道是否有人能知道为什么 我的数据框是 filld 有 3 列 第一列是国家名称 第二列只是一些数字数据 第三列是颜色 countr
  • 为什么我在 ddply 中看到“错误:length(rows) == 1 is not TRUE”?

    我有一个数据框 比如工资单 例如 payroll lt read table text AgencyName Rate PayBasis Status NumRate HousingAuthority 26 843 00 Annual Fu
  • 当子集长度为零时,如何简洁地处理子集?

    从向量中排除元素x x lt c 1 4 3 2 我们可以减去位置向量 excl lt c 2 3 x excl 1 1 2 这也是动态工作的 excl lt which x which max x gt quantile x 25 1 2
  • 使用 R 中的 tidyverse 重新调整因子和重新排序因子

    我想使用这些功能重新调平 and 重新排序 在我的数据框中 我了解重新调整级别的工作原理 但我不明白为什么我在 data frame 中看不到级别的变化 例如 假设我有鸢尾花数据集 library tidyverse head iris g
  • 在 Linux 下更改 RStudio 用户界面(不是图形等)中的字体大小

    This is not关于更改使用 RStudio 生成的图表中的字体大小的问题 我已经知道该怎么做了 我在配备 视网膜 显示屏的 MacBook Pro 上的 Linux 下使用 RStudio 我使用 KDE 作为我的窗口管理器 我可以
  • 求解非线性方程组

    我正在尝试求解以下四个方程组 我尝试过使用 rootSolve 包 但似乎我无法通过这种方式找到解决方案 我正在使用的代码如下 model lt function x F1 lt sqrt x 1 2 x 3 2 1 F2 lt sqrt
  • 通过 r 中的组变量进行汇总

    我有一个数据框如下 head newStormObject FATALITIES INJURIES PROPVALDMG CROPVALDMG EVTYPE total 1 0 15 2 5e 05 0 TORNADO 15 2 0 0 2

随机推荐

  • Canvas 或 ImageView 上的 Android 热图

    I want to generate dynamic heatmap just as below on either canvas or imageview I looked into google map heat map API but
  • 从ChartJS 2中的X像素值获取线条的Y值

    我在 Chartjs 中有一个折线图 我想在给定 x 轴像素值的情况下找到线上任意点的 Y 值 My Graph https i stack imgur com 94vKN png 目前 我正在挂钩 afterDatasetsDraw 事件
  • 使用 R 将子图移得更近

    我正在尝试将子图与 R 更紧密地结合在一起 我所做的基本上不重要 只是为了快速重现 代码如下 library igraph library plyr g lt graph ring 10 setEPS postscript out eps
  • 获取“HTTP 错误:404,未找到方法。”在 Firebase Cloud Functions 上运行“firebase 部署 --only 函数”时

    我几个小时以来一直被这个问题困扰 我想也许你们中的一个人以前遇到过这个问题 I get Error HTTP Error 404 Method not found 当我跑步时firebase deploy only functions所以我
  • 我们如何使表格布局双向滚动(水平、垂直)

    我在 XML 文件中定义了一个表 当前设置为垂直滚动 但我也希望它根据需要水平滚动 这是使用的XML代码
  • 使用 SQL Server 身份验证的文件流

    我想知道C 中的文件流是否使用SQL Server身份验证 是否可以通过使用用户名和密码在 Windows 身份验证中使用文件流连接到数据库 是的 必须使用 Windows 身份验证文件流 对付它最好的办法就是模仿它 在类中声明以下方法 D
  • 配置设置和 IoC

    我使用 IoC DI 方法 通常具有参数 这些参数是由最低层 数据库层等 从配置设置 即连接字符串 静态值等 读取的 最好的方法是什么 直接在这个最底层读取 即 string sendGridApiKey ConfigurationMana
  • PMD 的完整形式是什么?

    我在用PMD在我的 Java 项目中进行代码审查 只是想知道 P M D 的缩写是什么 代表 我在谷歌上搜索但找不到任何东西 有人知道吗 在 PMD 项目网站上 http pmd sourceforge net pmd 5 0 4 mean
  • Gradle构建找不到方法

    我正在跟踪开始 Android 开发 https app pluralsight com library courses android start developingPluralsight 课程 我们即将添加测试 说明说要添加添加and
  • 如何使用 JSF/Primefaces 使两个字段中的一个至少为必填字段

    我将 primefaces 与 jsf 一起使用 并且我想至少将两个字段之一设置为必填字段 这意味着如果这两个字段同时为空 将显示错误消息 这是我的代码示例
  • SSIS - RPC 服务器不可用

    我已安装 SQL Server 实例 并在安装向导中选择 Integration Services 但是 当我以 管理员 身份运行 SQL Server Management Studio 时 我可以在下面看到我的实例 数据库引擎 分析服务
  • 将映像包含在可执行 jar 中

    我一整天都在浏览 Stackoverflow 寻找如何做到这一点 但还没有成功 我正在将我制作的快速游戏打包成可执行 jar 但我没有正确引用图像 我只是引用了文件 background ImageIO read new File wood
  • 将 json 对象存储到 Azure blob 存储

    有没有办法存储 json 对象而不将其转换为流 我可以将其转换为流后上传 但是是否有任何方法可以将对象存储为 something json 而不将其转换为流 我现在应该做什么 const azureStorage require azure
  • OOP在大学里被滥用了吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我两年前开始上大学 从那时起我一直听到 首先设计你的课程 有时我真的会问自己 我的解决方案首先应该是一堆对象吗 有人说你看不到它的好处 因为你的
  • 显示 Android 中按下按钮后经过的时间

    我希望能够在 统计 类中的文本视图或计时器中显示自按下另一个类中的按钮以来经过的时间 实现这个最简单的方法是什么 Thanks 设置变量怎么样 System currentTimeMillis 当你膨胀视图时 在 onDestroy 处从当
  • 更改 LazyRow 上的滚动速度

    查看文档LazyRow我想知道是否可以降低滚动速度 看起来像LazyRow继承自ScrollState但我找不到任何关于如何降低滚动速度的有用信息 LazyRow 没有用于自定义滚动速度的参数 因此您必须手动执行此操作 您可以首先捕获类似于
  • Apollo GraphQL - 将 .graphql 架构导入为 typeDefs

    使用 graphql yoga 您可以通过执行以下操作简单地导入模式 typeDefs src schema graphql apollo server express 是否有类似的方法 如果没有 如何从外部导入 typeDefs grap
  • Android XML:RuntimeException:无法解析索引 6 处的属性

    你好亲爱的stackoverflower 在我的项目中 我使用新的 android 设计库 问题是 有一个运行时异常 我正在尝试创建一个浮动按钮 java lang RuntimeException Failed to resolve at
  • 将一个堆栈推入另一个堆栈

    在 C 中 有没有一种方法可以将一个堆栈压入另一个堆栈 而无需迭代堆栈元素 如果没有 我应该使用更好的数据结构吗 在Java中你可以这样做 stack1 addAll stack2 我希望找到 C 的类似物 0 安全解决方案 扩展方法 pu
  • 替换()与“[<-”?

    我最近偶然发现replace and lt 它们似乎具有相似的功能 例如 lt 我可以做这样的事情 gt x tst lt array 1 6 c 2 3 gt s tst lt array 0 c 2 3 gt s tst 1 2 3 1