R语言入门笔记:第一节,快速了解R语言——文件与基础操作

关于 R 语言的简单介绍

上一期 R 语言入门笔记里面我简单介绍了 R 语言的安装和使用方法,以及各项避免踩坑的注意事项。我想把这个系列的笔记持续写下去。

这份笔记只是我的 R 语言入门学习笔记,而不是一套 R 语言教程。换句话说:这份笔记不会事无巨细地介绍 R 语言的逐项细节,毕竟现在网上有关R的教程已经非常多了。这份笔记主要是针对 R 语言学习过程中各个容易掉进去的坑进行规避,以及根据我自身的经验提供一些学习思路。

首先,R 语言是一门特殊的、专用于统计分析和建模的编程语言。一般情况下,我猜测大家学习R语言主要可能是因为出于以下的原因:

  1. 主要从事统计分析的工作,将R语言作为自己的主力编程语言

  2. 主力编程语言不足以应对复杂的统计分析问题,需要 R 的辅助

  3. 你不知道,因为你只是一个普通的苦逼医学生,而身边的医学生都在使用 R

我个人比较符合第二种情况。我通常使用 Python,R 则是刚刚开始学习。因此我也希望能和这份笔记的读者们共同进步。

到什么地方去找 R 语言的教程

考虑到 R 语言是专为统计分析设计的编程语言,所以 R 语言的许多机制也和统计分析本身有关。

首先需要掌握一些有关统计分析的基本概念。一旦熟悉了统计分析的基本概念,就能基本了解R语言能够帮助你完成哪些功能(统计分析需要的那些计算机功能,R 语言几乎都可以实现。)

R 语言的基本语法

略。

……别人的教程都写过了,我干嘛还要再写一遍?

哎,跳过。

文件与路径

为什么要注意路径问题?

初次体验 R Studio 的时候,一大印象就是没有非常轻便稳定的路径管理,因为 R Studio 中终端并不会默认在工作空间里开启。

相比较其他我常用的 IDE 而言,如果是在 Visual Studio Code 中移动工作空间,只需要直接关闭IDE然后直接在电脑上打开另一个文件夹,右键,选择“在 Visual Studio Code 中打开”就可以很容易地在相应的工作目录运行和调试程序。但是对于 R Studio,即使你把右下角的 Files 栏切换到了正确的工作区目录(以防止新人不了解:就是你堆放数据文件和代码脚本的文件夹),你的终端还是在原来的那个目录里面。你这个时候去敲R的实时交互命令读取某个路径下的数据,或者运行 R 的代码文件读取数据,就要报错。

遇到这种情况,如果你不想在 R 命令行里面通过敲命令再切换一次,可以考虑将所有 R 语言编程活动都变成一个个独立的项目去管理。尝试在 R Studio 右上角点击 Files,然后新建一个 R 项目,下次打开代码直接点击后缀名为 *.Rproj 的项目文件,就能正确打开 R Studio 并切换正确的工作目录。

关于文件格式

R Script 与 R Markdown

R语言的代码最常见的主要有两种文件格式:原生的R语言脚本文件(R Script),以及 R Markdown,一种R语言和Markdown相互交替书写、分段运行的奇特代码。R Script 和 R Markdown 相当于 Python 中的 *.py 脚本和 Jupyter Notebook 的关系。

R Script

R Script 是 R 语言的脚本,就是正常编写代码的方式。

主流的 R 语言的代码规范可以参照 Google的R语言编码风格指南(Google’s R Style Guide)。比如在 R Script 中 R 语言代码可以分节,用小节标题前后四个 # 加空格分割的形式:

#### hello world ##### This is a hello world program in R
print("hello, world")

如果你有一个R脚本文件(比如 hello.R),你可以使用 source() 函数来加载它的内容到当前的工作空间中。这相当于在当前环境中运行这个文件的所有代码。

# 假设你有一个 hello.R 文件
# 定义了 Hello() 函数
source("hello.R")
Hello()

这样,definitions.R 中定义的所有函数和变量都会加载到当前的工作空间中,你可以在其他文件中使用它们。

有时你可能不希望加载所有定义到全局环境中,可以通过设置 source() 的 local 参数来控制代码加载到局部环境中。

local_env <- new.env()
source("hello.R", local = local_env)# 使用定义在 local_env 环境中的对象
local_env$Hello()

如果你的定义文件非常复杂或包含多个功能模块,你可以考虑将其封装为一个 R 包。这样,你可以通过 library() 来引用包中的功能,并且包的组织结构可以帮助你更好地管理代码。同样地,对于下载的包也是使用 library() 导入。

还有一种方式是使用 sys.source(),这里刚刚入门,暂且不论。

R Markdown

为防止新人朋友们不知道——简单的来讲,Markdown 是用来给文章排版的,是一种极简主义的排版工具,只有标题、引用、有序列表、无序列表、斜体、加粗、超链接和图片这 8 个功能,Markdown 语法简单易学,非常适合快速编写和组织文档,足以允许我们把 R 语言代码和代码说明性文章/报告放在一起排版了。

熟悉Jupyter Notebook的朋友可能会知道:Jupyter Notebook 实际上是一种通过网页实时渲染的 JSON 文本,而R Markdown则是完完全全的纯文本,只是在 R Markdown 中 Markdown 和 R 语言的代码可以交替编写。这就意味着R Markdown不能保存代码运行的结果,但也不会因为巨大的图片文件而变得臃肿。

另一方面,尽管 Jupyter Notebook 本身就具备 R 编程的功能,但实际上很多情况下 R Markdown 比 Jupyter Notebook 的体验更好。如果你的计算机上正确配置过 \LaTeX 的话,理论上你可以通过 R Markdown 一键构建PDFL格式的报告或者论文;如果没有 \LaTeX ,Word 或者 HTML 都是没问题的。关于其详细操作方法,以后的笔记里面我们慢慢聊。

image

大家在新建 R Markdown 的时候生成的文件里面就会自带简单的说明信息,事实上,我在这里无需赘述。但是出于礼貌也方便大家理解,我简记一笔:

简单的来讲:一个标准的 R Markdown 文件包含三个部分:YAML 头部、Markdown 文档和可运行的代码片段。这里逐一介绍:

YAML 头部

YAML 头部位于文件的最上方,用前后三个短横线 --- 包裹。它主要用来设置文档的元信息,例如标题、作者、日期、输出格式等。

---
title: "R Markdown 入门示例"
author: "盒子online_1396529"
date: "2024-07-01"
output: pdf_document
---

R Markdown 可以被编译成多种格式的文件,包括 PDF、HTML、Word 等,从而快速生成论文或统计分析报告。这个功能被称为 knit。选择输出格式时,只需在 YAML 头部指定 output 选项即可。每种输出格式都可以进行进一步的定制,例如,选择 PDF 输出时,你可以使用 \LaTeX 语法来调整排版细节。

output:pdf_document:latex_engine: xelatextoc: true # 添加目录number_sections: true # 章节自动编号
Markdown 文档部分

Markdown 文档部分是 R Markdown 的主体内容。在这里,你可以使用 Markdown 语法编写文本、标题、列表、引用、表格、图片等。

## 标题示例这是一个简单的段落,你可以使用 **加粗** 和 *斜体* 来突出重点。### 列表示例- 无序列表项1
- 无序列表项2
- 无序列表项31. 有序列表项1
2. 有序列表项2
3. 有序列表项3
可运行的代码块

R Markdown 的一个重要功能是可以在 Markdown 文档中嵌入 R 代码块,并在文档编译时自动运行这些代码。代码块可以生成图表、分析结果,并将这些内容直接嵌入到文档中(这个功能简直就是神了)!

代码块通常用上下两排三个反引号 ``` 包裹,并在第一排反引号后加上 {r} 指定这是一个 R 代码块(原生的 Markdown 语法在插入代码片段的时候指定编程语言的名称不加花括号)。

我在这里没有办法演示这个功能,因为这份笔记正是用 R Markdown 编写的。如果我另起一行写下 ```{r} 这段内容就会直接被识别成有待运行的 R 语言代码块,而代码块的格式也就被忽略掉不会插入笔记了。

R Markdown 结合了 Markdown 的简洁和 R 语言的强大功能,适合用来编写包含数据分析、报告、学术论文等内容的文档。它让编写文档的过程变得更加高效和灵活,无论是日常工作中的报告,还是学术研究中的论文,R Markdown 都是一个得力的工具。总的来讲: 当我们新开始一个 R 语言数据分析项目并处于数据探究阶段的时候,可以选择在一开始就直接新建 R Markdown 上手写,而不是一上来就编写 R 脚本文件。

关注灵活就业新业态,关注公账号:贤才宝(贤才宝https://www.51xcbw.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/65714.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

创意思维与决策方法——SCAMPER:探索创新思维的利器

探索创新思维的利器&#xff1a;SCAMPER法 在面对复杂问题或需要突破性创意时&#xff0c;我们常常需要一些行之有效的工具来引导思考。SCAMPER法正是这样一个激发创新思维的利器&#xff0c;它通过七个步骤&#xff1a;替代&#xff08;Substitute&#xff09;、组合&#xf…

微信小程序调用 WebAssembly 烹饪指南

我们都是在夜里崩溃过的俗人&#xff0c;所幸终会天亮。明天就是新的开始&#xff0c;我们会变得与昨天不同。 一、Rust 导出 wasm 参考 wasm-bindgen 官方指南 https://wasm.rust-lang.net.cn/wasm-bindgen/introduction.html wasm-bindgen&#xff0c;这是一个 Rust 库和 CLI…

自动驾驶3D目标检测综述(六)

停更了好久终于回来了&#xff08;其实是因为博主去备考期末了hh&#xff09; 这一篇接着&#xff08;五&#xff09;的第七章开始讲述第八章的内容。第八章主要介绍的是三维目标检测的高效标签。 目录 第八章 三维目标检测高效标签 一、域适应 &#xff08;一&#xff09;…

计算机毕业设计hadoop+spark+hive图书推荐系统 豆瓣图书数据分析可视化大屏 豆瓣图书爬虫 知识图谱 图书大数据 大数据毕业设计 机器学习

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

极品飞车6的游戏手柄设置

极品飞车&#xff0c;既可以用键盘来控制车辆的前进、后退、左转、右转、加速与减速&#xff0c;也可以使用游戏手柄来操作车辆的运行。需要注意的是&#xff0c;极品飞车虽然支持手柄&#xff0c;但是仅支持常见的北通、罗技还有部分Xbox系列的手柄&#xff0c;至于其他的PS4手…

【VBA】EXCEL - VBA 创建 Sheet 表的 6 种方法,以及注意事项

目录 1. 创建一个新工作表&#xff0c;并将其添加到工作簿的末尾 2. 创建一个新工作表&#xff0c;并命名它 3. 创建一个新工作表&#xff0c;并将其插入到指定位置 4. 检查是否已有同名工作表&#xff0c;避免重复创建 5. 创建多个工作表 6. 基于现有模板创建新工作表 …

html文件通过script标签引入外部js文件,但没正确加载的原因

移动端H5应用&#xff0c;html文件通过script标签引入外部js文件&#xff0c;但没正确加载&#xff0c;在移动设备上难以排查。通过PC浏览器打开&#xff0c;发现js被阻止了&#xff1a;blocked:mixed-content。 原因在于&#xff1a; “blocked:mixed - content” 是浏览器的…

虚拟机Centos下安装Mysql完整过程(图文详解)

目录 一. 准备工作 1. 设置虚拟机静态IP 2. 卸载Mysql 3. 给CentOS添加rpm源 二. 安装MySQL 1. 安装mysql服务 2. 启动mysql服务 3. 开启MySQL开机自启动 4. 查看mysql服务状态 5. 查看mysql初始密码 6. 登录mysql &#xff0c;修改密码 7. 允许外部访问MySQL数据库…

ulimit命令与nginx的联系

华子目录 ulimit使用ulimit命令查看当前限制设置特定限制常用的资源类型临时和永久设置 ulimit与nginx的联系ulimit对Nginx的影响Nginx配置中的相关参数 ulimit 在Linux系统中&#xff0c;ulimit命令用于获取和设置用户级别的资源使用限制。这些限制可以控制诸如可以打开的文件…

初识具身智能

具身智能是智能科学的一个基础问题&#xff0c;在过去的5.4亿年以来&#xff0c;地球上所有生物都是通过身体和环境交互、进化逐步产生的。通俗地讲&#xff0c;具身智能体以第一人称视角身临其境地从环境交互中理解外部世界的本质概念&#xff0c;被认为是通向通用人工智能的重…

【机器人】机器人的数学模型:符号表示、位形空间、状态空间、工作空间

定义 机器人是一种可重复编程的多功能机械臂&#xff0c;他们通过可变程控运动来执行如移动材料、零件、工具或者特种设备等多种任务。 ——美国机器人协会&#xff08;RIA&#xff09; 1.1 机器人的数学模型 1.1.1 机器人的符号表示 机械臂&#xff1a;关节joint 连杆link …

VITUREMEIG | AR眼镜 算力增程

根据IDC发布的《2024年第三季度美国AR/VR市场报告》显示&#xff0c;美国市场AR/VR总出货量增长10.3%。其中&#xff0c;成立于2021年的VITURE增长速度令人惊艳&#xff0c;同比暴涨452.6%&#xff0c;成为历史上增长最快的AR/VR品牌。并在美国AR领域占据了超过50%的市场份额&a…

PY_11_01

前言 PY_11_01 抄就行了&#x1f47b; 一、代码步骤 抄就行了&#x1f47b; def fact(n):if n1:return 1else:return n*fact(n-1)while True:minput(请输入一个正整数m:)if not m.isdigit() or int(m)0:print(输入错误&#xff0c;请重新输入&#xff01;)else:mint(m)brea…

Richardson-Lucy (RL) 算法的卷积形式推导

Richardson-Lucy 算法从模糊图像中恢复原始图像。Richardson-Lucy 方法假设观测图像的噪声服从泊松分布&#xff0c;是一种极大似然估计方法。 1. 问题定义 假设我们有一个原始图像 f ( x , y ) f(x,y) f(x,y)&#xff0c;通过一个已知的点扩散函数 h ( x , y ) h(x,y) h(x,y…

网线直连模式下,ubuntu虚拟机与zynq开发板互ping

目的&#xff1a;想要使用网线将windows网口与zynq开发板网口直连&#xff0c;可以实现通过nfs&#xff08;network file system)挂载在ubuntu中的根文件系统&#xff0c;从而运行linux&#xff0c;方便linux的驱动开发。 参考文章&#xff1a; 领航者 ZYNQ 之嵌入式 Linux 开…

深入了解 Zookeeper:原理与应用(选举篇)

在上一篇关于 Zookeeper 的介绍中&#xff0c;我们知晓了它在分布式系统中的关键地位以及核心的工作原理框架。今天&#xff0c;重点来深入探究一下 Zookeeper 集群是如何实现领导者选举这一至关重要的环节的。 一、选举触发时机 集群启动时&#xff1a;当一个全新的 Zookeep…

金仓数据库对象访问权限的管理

基础知识 对象的分类 数据库的表、索引、视图、缺省值、规则、触发器等等&#xff0c;都称为数据库对象&#xff0c;对象分为如下两类: 模式(SCHEMA)对象:可以理解为一个存储目录&#xff0c;包含视图、索引、数据类型、函数和操作符等。非模式对象:其他的数据库对象&#x…

C++并发:线程管控

1 线程基本管控 每个C程序都含有至少一个线程&#xff0c;即运行main()的线程&#xff0c;它由C运行时系统启动。随后程序可以发起更多线程&#xff0c;它们以别的函数作为入口。这些新线程连同起始线程并发运行。当main()返回时&#xff0c;程序就会退出&#xff1b;同样&…

网络爬虫性能提升:requests.Session的会话持久化策略

网络爬虫面临的挑战 网络爬虫在运行过程中可能会遇到多种问题&#xff0c;包括但不限于&#xff1a; IP被封禁&#xff1a;频繁的请求可能会被网站的反爬虫机制识别&#xff0c;导致IP被封。请求效率低&#xff1a;每次请求都需要重新建立TCP连接&#xff0c;导致请求效率低下…

基于华为atlas的车辆车型车牌检测识别

整体分为2个部分&#xff0c;也就是2个模型&#xff0c;车辆检测、车型检测、车牌检测这3个功能是一个基于yolov5的模型实现&#xff0c;车牌识别是基于PaddleOCR中的PP-OCRv3的模型实现。 车辆检测数据集制作&#xff1a; 车辆检测、车型检测、车牌检测的数据集主要从coco数…