R语言中 attach()与detach(),及with()的使用

2023-10-31

attach(what, pos = 2L, name = deparse(substitute(what), backtick=FALSE),
       warn.conflicts = TRUE)

1.attach()是对what添加路径索引,避免重复输入what名称,参数解释如下:

  • what:数据框或列表;
  • pos=2L:添加的路径存储的位置,一般默认即可。在对多个数据添加索引时,此位置会变成3L,4L,5L...detach()撤销索引路径时,会撤销对应位置的索引储存,具体例子见后;
  • name:不懂,遇见需要的情况再补充;
  • backtick=FALSE:反引号,经过测试,该参数固定为FALSE不可调,再调用索引时会用到;
  • warn.conflicts:是否打印警告。

detach()是撤销attach()建立的路径索引,往往二者配套使用。

举例如下:

> class(data) #data为自己提供的数据
[1] "data.frame"
> colnames(data) #查看data列
 [1] "No."            "Component Name" "Mass Info"      "Retention Time"
 [5] "QCRSD"          "P-value"        "Fold change"    "A-1"           
 [9] "A-2"            "A-3"            "B-1"            "B-2"           
[13] "B-3"            "QC1"            "QC2"            "QC3"           
[17] "as.is"         
> attach(data)
The following objects are masked from data (pos = 3):

    A-1, A-2, A-3, as.is, B-1, B-2, B-3, Component Name, Fold change,
    Mass Info, No., P-value, QC1, QC2, QC3, QCRSD, Retention Time

The following objects are masked from data (pos = 4):

    A-1, A-2, A-3, as.is, B-1, B-2, B-3, Component Name, Fold change,
    Mass Info, No., P-value, QC1, QC2, QC3, QCRSD, Retention Time
>No. 
 [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
[26] 26
> A-1
Error: object 'A' not found  #因为列名“A-1”不符合变量命名规则,此处可用check.names=T改变,会 
                             #改为A.1
> `A-1`   #用反引号辅助读取A-1列信息
 [1] 6.112652e+07 5.338550e+06 9.803146e+07 1.698537e+07 3.193722e+07 2.111517e+07
 [7] 7.825601e+06 2.726090e+07 1.062785e+07 1.018187e+08 1.051693e+07 1.336919e+07
[13] 5.948830e+04 2.090497e+06 5.882181e+06 4.733337e+07 5.974494e+05 2.444981e+07
[19] 8.283025e+03 2.215970e+04 7.372889e+05 5.948745e+05 2.102290e+07 9.133244e+06
[25] 3.996773e+07 4.434691e+05
> data$`A-1`  #与上述建立路径索引结果相同
 [1] 6.112652e+07 5.338550e+06 9.803146e+07 1.698537e+07 3.193722e+07 2.111517e+07
 [7] 7.825601e+06 2.726090e+07 1.062785e+07 1.018187e+08 1.051693e+07 1.336919e+07
[13] 5.948830e+04 2.090497e+06 5.882181e+06 4.733337e+07 5.974494e+05 2.444981e+07
[19] 8.283025e+03 2.215970e+04 7.372889e+05 5.948745e+05 2.102290e+07 9.133244e+06
[25] 3.996773e+07 4.434691e+05
> summary(QC1,`A-1`)
     Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
     4149   1194476  12129322  21224523  30429375 104915075 
> summary(data$QC1,data$`A-1`)
     Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
     4149   1194476  12129322  21224523  30429375 104915075
> summary(`A-1`,`Fold change`)
     Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
     8283   1075591  10572393  21472932  26558125 101818722 
> summary(data$`Fold change`,data$`A-1`)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  0.633   1.256   1.444   1.433   1.590   2.649
> detach(data)
> No.  #如果发现还能出结果...那就多detach几次==
Error: object 'No.' not found

2.with()函数

with(data, expr, ...)  #data可以是an environment, a list, a data frame, or an integer as in 
                       #sys.call
within(data, expr, ...)     #data为列表或数据框
within(data, expr, keepAttrs = TRUE, ...)
  •  within()函数中data必须是列表或数据框,with()中data类型更广
  • 表达式,大括号{}之间的语句都只针对data执行,但如果大括号中只有一句的话,则省略大括号。
> with(data,{No.})  #No.符合变量命名标准,可直接查看
 [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16
[17] 17 18 19 20 21 22 23 24 25 26
> with(data,{A-1})   #A-1不符合变量命名标准,不可直接查看,需要用反引号调用
Error in eval(substitute(expr), data, enclos = parent.frame()) : 
  object 'A' not found
> with(data,{`A-1`})
 [1] 6.112652e+07 5.338550e+06 9.803146e+07
 [4] 1.698537e+07 3.193722e+07 2.111517e+07
 [7] 7.825601e+06 2.726090e+07 1.062785e+07
[10] 1.018187e+08 1.051693e+07 1.336919e+07
[13] 5.948830e+04 2.090497e+06 5.882181e+06
[16] 4.733337e+07 5.974494e+05 2.444981e+07
[19] 8.283025e+03 2.215970e+04 7.372889e+05
[22] 5.948745e+05 2.102290e+07 9.133244e+06
[25] 3.996773e+07 4.434691e+05
> `A-1`    #with函数中路径索引不能在外部调用,需要用<<- 赋值才可以
Error: object 'A-1' not found
> with(data,{a-1<<-`A-1`})  #a-1符合变量命名标准,需要用反引号建立变量名
Error in a - 1 <<- `A-1` : object 'a' not found
> with(data,{a<<-`A-1`})
> a
 [1] 6.112652e+07 5.338550e+06 9.803146e+07
 [4] 1.698537e+07 3.193722e+07 2.111517e+07
 [7] 7.825601e+06 2.726090e+07 1.062785e+07
[10] 1.018187e+08 1.051693e+07 1.336919e+07
[13] 5.948830e+04 2.090497e+06 5.882181e+06
[16] 4.733337e+07 5.974494e+05 2.444981e+07
[19] 8.283025e+03 2.215970e+04 7.372889e+05
[22] 5.948745e+05 2.102290e+07 9.133244e+06
[25] 3.996773e+07 4.434691e+05
> with(data,{`a-1` <<- `A-1`})  
> a-1
 [1] 6.112652e+07 5.338549e+06 9.803146e+07
 [4] 1.698537e+07 3.193722e+07 2.111517e+07
 [7] 7.825600e+06 2.726090e+07 1.062785e+07
[10] 1.018187e+08 1.051693e+07 1.336919e+07
[13] 5.948730e+04 2.090496e+06 5.882180e+06
[16] 4.733337e+07 5.974484e+05 2.444981e+07
[19] 8.282025e+03 2.215870e+04 7.372879e+05
[22] 5.948735e+05 2.102290e+07 9.133243e+06
[25] 3.996773e+07 4.434681e+05
> with(data,{plot(No.,`A-1`)})  #{}中可以进行复杂计算

 

 

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

R语言中 attach()与detach(),及with()的使用 的相关文章

  • grep() 搜索数据框的列名

    有没有更清晰 更简单 更直接 更短的方法来做到这一点 其中 df1 是数据框 names df1 grep Yield names df1 我想返回任何包含单词 yield 的列名称 Thanks grep has a value应该适用于
  • 如果“testthat”测试在“R”中失败,则打印自定义诊断信息

    I use a testthat单元测试来检查是否data frame函数返回的结果与我期望它返回的结果相同 如果测试失败 testthat打印一些诊断信息 例如 MyFunction df orig is not identical to
  • 从网络源获取 R 中的数据作为数据框

    我正在尝试使用 RCurl 包将一些空气污染背景数据作为 data frame 直接加载到 R 中 该网站有 3 个下拉框 用于在下载 csv 文件之前选择选项 如下图所示 我试图从下拉框中选择 3 个值 并使用 下载 CSV 按钮将数据作
  • R从列表中提取数据框,列名中没有前缀

    我在列表中放置了一个数据框 然后 当尝试将其提取回来时 我得到了该数据帧的所有以列表键为前缀的列名称 有没有办法完全按照最初传递的方式提取数据帧 cols lt c column1 Column2 Column3 df1 lt data f
  • R read_excel:libxls 错误:无法解析文件

    我试图使用 readxl read excel 将 xls 文件读入 R 但它给出了以下错误 Error filepath data xls libxls error Unable to parse file 还尝试了 readxl exc
  • 使用 ggplot2 修改点子集的形状

    我正在尝试绘制一个沿大量维度变化的大型散点图 这是我的起始情节 p lt ggplot mtcars aes wt mpg shape cyl colour gear size carb geom point 使用mtcars数据集 我只是
  • R 中的 NA 替换函数

    我正在尝试替换矩阵中的 NA mat 零 我在用着mat is na mat lt 0 当我有 18946 个变量的 94531 个观察值或更小的矩阵时 效果很好 但我在 22752 个变量的 112039 个观察值的矩阵上尝试它 R 显示
  • 在 mac (iMac OSX ) 终端中远程运行脚本(r 脚本)到其他计算机

    我有一个小示例脚本 script p r 如下所示 打算在终端中运行 usr bin Rscript sink output capture txt mn lt mean 1 10 and so on much longer list of
  • R-了解 akima::interp 结果中的 NA 值

    我有以下数据框 ref dat k Intensity Slope 1 0 021467214 33 16 2 0 012444759 33 8 3 0 006079156 33 4 4 0 003792025 33 2 5 0 02276
  • 如何让R使用所有处理器?

    我有一台运行 Windows XP 的四核笔记本电脑 但查看任务管理器 R 似乎一次只使用一个处理器 如何让 R 使用全部四个处理器并加速我的 R 程序 我有一个基本系统 我使用它在 for 循环上并行化我的程序 一旦您了解需要做什么 此方
  • 使用 R 的 flextable 包时,有没有办法将传递给 add_header_lines() 的字符串部分加粗

    我正在使用我喜欢的 flextable 包为 Word 文档创建几个表格 但是 我在将表格标题中的部分文本加粗时遇到了一些麻烦 例如 我希望标题为 Table 1 我的表格标题的其余部分 而不是 表 1 我的表格标题的其余部分 I 找到这个
  • 如何更新条件公式?

    让我直接进入示例 考虑以下等式 frml lt formula y a b x z 使用这样的公式规范 例如和AER ivreg 我想更新这个公式 使其显示为 frml2 lt y a b c x z w 但是 我不确定如何更新条件标志之前
  • 限制数据框中所有单元格的字符串长度?

    您好 有没有一种方法可以限制 data frame 中所有列的字符串文本大小 而不必循环遍历每一列并一次使用 str trunc 之类的东西 例如下面的数据框 我可以将所有文本大小限制为仅 5 个字符 而不必一次只执行一列吗 如果有 50
  • 如何获得属于五分位数的x?

    我正在大学学习使用 R 进行计量经济学项目 所以请原谅我的笨拙 基本上 使用并给出 一个矩阵 股票价格 行 天 列 公司股票价格 另一个矩阵 市值 行 天 列 公司市值 我必须收集第三个矩阵每天观察的属于市值分布第一五分位数的股票价格 然后
  • 在 R 中绘制对数正态概率密度

    我正在尝试在 R 中生成对数正态概率密度图 其中包含 3 个不同的均值对数和标准差对数 我尝试了以下方法 但我的图表太丑了 看起来一点也不好看 x lt seq 0 10 length 100 a lt dlnorm x meanlog 0
  • 在另一个 Rmd 中运行选定的块

    我已经在源 Rmd 文件中运行了分析 并且希望仅使用few来自源的块 我已经看到了一些关于从源 Rmd 中提取所有块的答案来自另一个 Rmd 中的 Rmd 文件的源代码 https stackoverflow com questions 4
  • R 编程:如何计算数据框中两个单元格之间的差异并将它们保存在新列中

    尝试学习 R 并陷入自相关示例中 我想将 x 的差异与 y 的差异进行回归 我在数据框中有 x 和 y 并且希望将 x2 x1 的差值保存在新列 例如 dx 中 我不知道该怎么做 我拥有的 data1 x y 5 3 8 9 3 1 1 5
  • glmnet 未从 cv.glmnet 收敛 lambda.min

    我跑了20倍cv glmnet套索模型以获得 lambda 的 最佳 值 但是 当我尝试重现结果时glmnet 我收到一个错误 内容如下 Warning messages 1 from glmnet Fortran code error c
  • r 中的 5 维图

    我正在尝试在 R 中绘制 5 维图 我目前正在使用rgl包以 4 个维度绘制数据 使用 3 个变量作为 x y z 坐标 另一个变量作为颜色 我想知道是否可以使用这个包添加第五个变量 例如空间中点的大小或形状 这是我的数据和当前代码的示例
  • ggplot散点图中的图例问题

    我想使用 ggplot 创建显示方法比较数据的散点图 绘图应包含原始数据 理想线和带误差的拟合线 图例应显示理想线和拟合线的线型 线宽 线颜色 我可以获得大部分我想要的东西 但是图例存在以下问题 图例显示每种线型有 2 条线 为什么 如何解

随机推荐

  • C# 调用SQL Server存储过程,传入参数,返回查询结果,更新dataGridView

    调用SQL Server存储过程 传入参数 返回查询结果 using SqlConnection conn new SqlConnection connectionString String cmdText Screen 存储过程名 Sql
  • Bible读经体会

    诸天述说 神的荣耀 穹苍传扬他的手段 诗篇19 1 花草树木在喊叫 耶和华造我的 数学从耶和华而来 自然界自然启示从耶和华而来 里面体现了耶和华的创意无限和思路周全 我们默默欣赏着观看着 今天阅读了创世纪的一点点体会 做下笔记 请勿用验证的
  • Shell--基础--01--介绍

    Shell 基础 01 介绍 1 Shell 环境 Shell 编程需要2个环境 文本编辑器 能解释执行的脚本解释器 2 Linux 的 Shell 常见种类 Bourne Shell usr bin sh或 bin sh Bourne A
  • python dataframe索引转成列_Pandas之DataFrame对象的列和索引之间的转化

    约定 import pandas as pd DataFrame对象的列和索引之间的转化 我们常常需要将DataFrame对象中的某列或某几列作为索引 或者将索引转化为对象的列 pandas提供了set index reset index
  • vue 项目中引用cdn上的静态js文件

    vue 项目中引用cdn上的静态js文件 需求 一份静态配置文件放在cdn中 文件暴露出数据列表和公共方法 读取文件的配置数据和公共方法 初始化Action列表 const cdnUrl https cdn xxx js libs vm a
  • Bat延时退出窗口

    timeout t 5
  • 【Error】ImportError: /lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29‘ not found

    参考文章 如何解决version GLIBCXX 3 4 29 not found的问题 1 问题 在 wsl ubuntu20 04 运行 yolov8 时 出现以下错误 ImportError lib x86 64 linux gnu
  • san.js源码解读之工具(util)篇——each函数

    一 迭代器模式 在开始解析源码之前 先来看一下 javascript 设计模式 迭代器模式 如果没有接触过该模式的小伙伴可能一脸疑惑 表示没听说过 但是这个迭代器模式 可能你已经用了很久了只是不知道它的名字罢了 比如 jquery中的 ea
  • 个位数统计 C语言

    1021 个位数统计 15 分 给定一个 k 位整数 N dk 1 10k 1 d1 101 d0 0 di 9 i 0 k 1 dk 1 gt 0 请编写程序统计每种不同的个位数字出现的次数 例如 给定 N 100311 则有 2 个 0
  • python萤火虫算法_萤火虫算法-python实现

    1 importnumpy as np2 from FAIndividual importFAIndividual3 importrandom4 importcopy5 importmatplotlib pyplot as plt6 7 8
  • FileNotFoundError: [Errno 2] No such file or directory: 'template/

    1 在运行generate list py时一直出现找不到templates header html和templates footer html的错误提示 2 后来才发现是路径问题 由于webapp是另外新建的目录 所以对yate py中w
  • Opencv使用cascade方法训练自己的LBP特征分类器的全过程

    前言 刚刚才把自己训练的分类器整出来 现在来理一下整个过程 从制作正负样本开始一直到最后产生自己的分类器 xml文件 因为毕设的要求 可能要用Opencv训练识别模型 用以识别道路积水 Opencv上自带的只有一些识别脸 眼睛等模型 所以要
  • 逻辑表达式三种化简方法

    逻辑表达式三种化简方法 目录 公式化简法 卡诺图化简法 机器化简法 一 公式法化简 是利用逻辑代数的基本公式 对函数进行消项 消因子 常用方法有 并项法 利用公式AB AB A 将两个与项合并为一个 消去其中的一个变量 吸收法 利用公式A
  • Unity WebGL Calls Rust Wasm

    Unity WebGL Calls Rust Wasm Jin Qing s Column May 2023 Reference https zenn dev ruccho articles 261136f7bdb003 In this a
  • 【通信原理】数字基带传输的线路码型

    数字基带传输的线路码型 简单介绍数字基带传输的线路码型的信号波形的特点 以及生成方法 注意观察频谱 文末附Matlab代码 以下包括双极性NRZ 单极型NRZ 双极型RZ 单极型RZ 差分码 曼切斯特码 数字双相码 密勒码 CMI码 AMI
  • STM32+二氧化碳传感器(FS00301)

    配置串口4 uart c u8 USART4 RX BUF USART REC LEN 接收缓冲 最大USART REC LEN个字节 u16 USART4 RX STA 0 接收状态标记 void uart4 init u32 bound
  • Istio Java SDK API - 资源访问-VirtualService/Gateway/DestinationRule/ServiceEntry

    环境 参考上一篇文章 Java如何连接Istio 参考上一篇文章 访问Isito资源 VirtualService Gateway DestinationRule ServiceEntry 项目源码 package com you micr
  • QML控件类型:Tumbler

    一 描述 Tumbler 用于通过旋转轮子来选择一个值 Tumbler model 10 API 类似于 ListView 和 PathView 等视图的 API 可以设置模型和委托 并且 count 和 currentItem 属性提供对
  • html登录页面设计

    html登录页面设计实训 html和CSS概述 1 html HTML 是一种标记语言 用于定义网页的结构和内容 包括段落 标题 列表 链接等等 它使用标签来标识不同的内容 并且这些标签可以用于嵌套 2 CSS CSS 是一种样式表语言 用
  • R语言中 attach()与detach(),及with()的使用

    attach what pos 2L name deparse substitute what backtick FALSE warn conflicts TRUE 1 attach 是对what添加路径索引 避免重复输入what名称 参数