当前位置: 首页 > news >正文

直接写和放在函数中不同的R语言用法

索引数据框中的某一列

df$A可以索引数据框df中列名为A的列的所有值。那么假如列名是一个R对象怎么做?

df <- data.frame(A=1:5, B=(1:5)*2)df$A## [1] 1 2 3 4 5needed_column = 'A'# df$needed_column ? Wrong# 注意是双方括号
df[[needed_column]]## [1] 1 2 3 4 5

ggplot2绘图中指定所需的列信息

ggplot绘图时,可以直接提供列名字(如下面的A和B分别指定为x轴和y轴)指定绘图属性,但如果列名字是一个R对象呢?这一情况常发生于自定义函数时。

library(ggplot2)ggplot(data=df, aes(x=A, y=B)) + geom_point()

如下:就需要使用sym和!!了,都来源于rlang包。

1、sym把一个R字符串对象转换为一个symbol。
2、(bang-bang操作符)!!则把symbol再转回R字符串对象,等同于直接写这个对象。

看新的例子中,xvariable=“A”;xvariable_en <- sym(xvariable)转换为了symbol;aes(x=!!xvariable_en)等同于直接写aes(x=A)。兜兜转转,2步转换把想传的值传进去了。

注意sym和!!的使用

#
ggplot_points <- function(data, xvariable, yvariable){xvariable_en <- sym(xvariable)yvariable_en <- sym(yvariable)ggplot(data, aes(x=!!xvariable_en, y=!!yvariable_en)) +geom_point()
}ggplot_points(df, "A", "B")

另外还有syms和!!!,则可以转换向量、列表对象。

library(dplyr)
df %>% select(A,B)##   A  B
## 1 1  2
## 2 2  4
## 3 3  6
## 4 4  8
## 5 5 10# 等同于
columns <- c("A","B")
columns_en <- syms(columns)
df %>% select(!!!columns_en)##   A  B
## 1 1  2
## 2 2  4
## 3 3  6
## 4 4  8
## 5 5 10

写个公式 (formula)

公式 (formula)是一个在运算和绘图中常用的形式,直接写公式A~B可以,但如果是用对象构造公式呢?

lm(A~B, data=df)## 
## Call:
## lm(formula = A ~ B, data = df)
## 
## Coefficients:
## (Intercept)            B  
##   1.192e-15    5.000e-01

通过as.formula转换

y = 'A'
z = 'B'formula1 <- as.formula(paste(y,"~", z))
lm(formula1, data=df)## 
## Call:
## lm(formula = formula1, data = df)
## 
## Coefficients:
## (Intercept)            B  
##   1.192e-15    5.000e-01

当然下面这个“神奇”的写法也可以,整个表达式构建一个字符串,再解析执行出来。

eval(parse(text=paste("lm(", y, "~", z, ", data=df)")))## 
## Call:
## lm(formula = A ~ B, data = df)
## 
## Coefficients:
## (Intercept)            B  
##   1.192e-15    5.000e-01

P1 R基本语法和使用方式01

P2 R基本语法和使用方式02

相关文章:

直接写和放在函数中不同的R语言用法

索引数据框中的某一列 df$A可以索引数据框df中列名为A的列的所有值。那么假如列名是一个R对象怎么做&#xff1f; df <- data.frame(A1:5, B(1:5)*2)df$A## [1] 1 2 3 4 5needed_column A# df$needed_column ? Wrong# 注意是双方括号 df[[needed_column]]## [1] 1 2 3 4…...

《mysql轻松学习·二》

1、创建数据表 contacts&#xff1a;数据表名 auto_increament&#xff1a;自动增长 primary key&#xff1a;主键 engineInnoDB default charsetutf8; 默认字符集utf8&#xff0c;不写就默认utf8 对数据表的操作&#xff1a; alter table 数据表名 add sex varchar(1); //添…...

Swift对比版本号

在 Swift 中比较两个版本号的大小可以使用以下方法: func compareVersions(_ version1: String, _ version2: String) -> ComparisonResult {let v1Components version1.components(separatedBy: ".")let v2Components version2.components(separatedBy: "…...

MySQL数据表的“增删查改“

我们学习数据库, 最重要的就是要学会对数据表表进行"增删查改"(CRUD).(C -- create, R -- retrieve, U -- update, D -- delete) 目录 一. "增"(create) 1. 普通新增 2. 指定列新增 3. 一次插入多行 4. 用insert插入时间 5. 小结 二. "查"…...

Github查询语法

转载自link 基础查询结构 一个关键词会匹配文件内容或文件路径。 多个关键词会匹配文件内容&#xff0c;只要包含关键词&#xff0c;就会出现在搜索结果中&#xff0c;不论前后顺序&#xff0c;是否是一个单词&#xff08;多个关键词之间没有空格&#xff09;。 还可以使用…...

pqgrid的使用

npm安装pqgrid npm install pqgridf --registryhttps://registry.npmmirror.com npm install jquery-ui --registryhttps://registry.npmmirror.comvue文件 <template><div><div id"grid_json"></div></div> </template><s…...

媳妇面试了一家公司,期望月薪20K,对方没多问就答应了,只要求3天内到岗,可我总觉得哪里不对劲。

“20k&#xff01;明天就来上班吧&#xff01;” 听到这句话&#xff0c;你会不会两眼放光&#xff0c;激动得差点跳起来&#xff1f; 朋友媳妇小丽&#xff0c;最近就经历了这样一场“梦幻面试”。然而&#xff0c;事情的发展却远没有想象中那么美好…… “这公司也太好了吧…...

【Makefile笔记】小白入门篇

【Makefile笔记】小白入门篇 文章目录 【Makefile笔记】小白入门篇所需组件一、简单了解Makefile1.Makefile简介2.Makefile 原理 二、为什么要使用Makefile1.解决编译时链库的不便2.提高编译效率&#xff0c;缩短编译时间&#xff08;尤其是大工程&#xff09; 三、Makefile语法…...

快速入门文件操作+5种例子演示

文件操作 基本操作注意事项例子1&#xff1a;读取文件内容例子2&#xff1a;写入文件内容例子3&#xff1a;追加文件内容例子4&#xff1a;读取并写入文件内容&#xff08;复制文件&#xff09;例子5&#xff1a;使用二进制模式读写文件 基本操作 在C语言中&#xff0c;使用文…...

基于Vue3的Uniapp实训项目|一家鲜花店

基于Vue的Uniapp实训指导项目 项目预览&#xff1a; 在这里插入图片描述 pages.json {"pages": [ //pages数组中第一项表示应用启动页&#xff0c;参考&#xff1a;https://uniapp.dcloud.io/collocation/pages{"path": "pages/index/index",&…...

Python3 字典

前言 本文主要介绍Python中的字典&#xff08;dict&#xff09;,主要内容包括&#xff1a;字典简介、字典特性、字典的基本操作。 文章目录 前言一、字典简介二、字典特性1、键值对2、无序性?3、可变性4、键的唯一性5、值的类型不限 三、字典的基本操作1、创建2、访问3、增加…...

JPA详解

文章目录 JPA概述JPA的优势JPA注解 JPA概述 Java Persistence API&#xff08;JPA&#xff09;是 Java EE 平台的一部分&#xff0c;它为开发者提供了一种用于对象关系映射&#xff08;ORM&#xff09;的标准化方法。JPA 提供了一组 API 和规范&#xff0c;用于在 Java 应用程…...

Linux线程:线程分离

目录 一、什么是线程分离 1.1pthread_detach 1.2pthread线程库存在的意义 1.3__thread线程的局部存储 1.4系统调用clone 一、什么是线程分离 1.1pthread_detach 默认情况下&#xff0c;新创建的线程是joinable的&#xff0c;线程退出后&#xff0c;需要对其进行pthread_joi…...

chatgpt之api的调用问题

1.调用api过程中&#xff0c;出现如下报错内容 先写一个测试样例 import openaiopenai.api_key "OPEN_AI_KEY" openai.api_base"OPEN_AI_BASE_URL" # 是否需要base根据自己所在地区和key情况进行completion openai.ChatCompletion.create(model"g…...

Java中lambda表达式是啥怎么使用

在Java中&#xff0c;Lambda表达式&#xff08;也称为闭包&#xff09;是一种简洁地表示匿名函数&#xff08;即没有名称的函数&#xff09;的方式。它们允许你将函数作为参数传递或赋值给变量&#xff0c;从而简化代码。Lambda表达式在Java 8及更高版本中引入。 Lambda表达式…...

selenium中, quit 和close的区别

close时 """ close和quit的区别 close关闭当前页 (只是关闭了当前) quit离开整个浏览器 &#xff08;走远了&#xff09; """ from selenium import webdriver import time# 创建浏览器驱动对象 from selenium.webdriver.co…...

管易云和金蝶云星空接口打通对接实战

管易云和金蝶云星空接口打通对接实战 源系统:管易云 金蝶管易云是金蝶集团旗下以电商和新零售为核心业务的子公司&#xff0c;公司于2008年成立&#xff0c;拥有从事电商及新零售业务相关专业知识工作者超过1000人。为伊利、网易有道、东阿阿胶、金龙鱼、海康、科大讯飞等超过1…...

DP-Kmaens密度峰值聚类算法

我有个问题 关于 [密度值>密度阈值] 的判定这里&#xff0c;新进来的新数据怎么确定他的密度值&#xff1f;密度阈值又是怎样确定的呢&#xff1f;...

STM32-14-FSMC_LCD

STM32-01-认识单片机 STM32-02-基础知识 STM32-03-HAL库 STM32-04-时钟树 STM32-05-SYSTEM文件夹 STM32-06-GPIO STM32-07-外部中断 STM32-08-串口 STM32-09-IWDG和WWDG STM32-10-定时器 STM32-11-电容触摸按键 STM32-12-OLED模块 STM32-13-MPU 文章目录 1. 显示器分类2. LCD简…...

linux nohup命令详解:持久运行命令,无视终端退出

nohup &#xff08;全称为 “no hang up”&#xff09;&#xff0c;用于运行一个命令&#xff0c;使其在你退出 shell 或终端会话后继续运行。 基本语法 nohup command [arg1 ...] [&> output_file] &command 是你想要运行的命令。[arg1 ...] 是该命令的参数。&am…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

Matlab | matlab常用命令总结

常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...

Go 并发编程基础:通道(Channel)的使用

在 Go 中&#xff0c;Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式&#xff0c;用于在多个 Goroutine 之间传递数据&#xff0c;从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...

力扣热题100 k个一组反转链表题解

题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...

Webpack性能优化:构建速度与体积优化策略

一、构建速度优化 1、​​升级Webpack和Node.js​​ ​​优化效果​​&#xff1a;Webpack 4比Webpack 3构建时间降低60%-98%。​​原因​​&#xff1a; V8引擎优化&#xff08;for of替代forEach、Map/Set替代Object&#xff09;。默认使用更快的md4哈希算法。AST直接从Loa…...