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

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)

相关文章:

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

关于 R 语言的简单介绍 上一期 R 语言入门笔记里面我简单介绍了 R 语言的安装和使用方法&#xff0c;以及各项避免踩坑的注意事项。我想把这个系列的笔记持续写下去。 这份笔记只是我的 R 语言入门学习笔记&#xff0c;而不是一套 R 语言教程。换句话说&#xff1a;这份笔记不…...

【亚马逊云】基于Amazon EC2实例部署 NextCloud 云网盘并使用 Docker-compose 搭建 ONLYOFFICE 企业在线办公应用软件

文章目录 1. 部署EC2实例2. 安装 Docker 服务3. 安装docker-compose4. 创建Docker-compose文件5. 创建nginx.conf文件6. 运行docker-compose命令开始部署7. 访问ONLYOFFICE插件8. 访问NextCloud云盘9. 下载并启用ONLYOFFICE插件10. 上传文件测试11. 所遇问题12. 参考链接 1. 部…...

java Redisson 实现限流每秒/分钟/小时限制N个

1.引入maven包: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency><groupId>org.redisson</groupId><artifactId>red…...

【漫话机器学习系列】029.累积分布函数(Cumulative Distribution Function)

累积分布函数&#xff08;Cumulative Distribution Function, CDF&#xff09; 累积分布函数&#xff08;CDF&#xff09;是概率论和统计学中的一个基本概念&#xff0c;用于描述随机变量取值的累积概率分布情况。它在理论研究和实际应用中广泛使用。 定义 给定随机变量 X&am…...

设计模式之访问者模式:一楼千面 各有玄机

~犬&#x1f4f0;余~ “我欲贱而贵&#xff0c;愚而智&#xff0c;贫而富&#xff0c;可乎&#xff1f; 曰&#xff1a;其唯学乎” 一、访问者模式概述 \quad 江湖中有一个传说&#xff1a;在遥远的东方&#xff0c;有一座神秘的玉楼。每当武林中人来访&#xff0c;楼中的各个房…...

AI 编程的世界:用Cursor编写评分项目

AI 编程的世界&#xff1a;用Cursor编写评分项目 今天是2024年的最后一天&#xff0c;祝大家在新的一年&#xff0c;健康开心快乐&#xff01; 岁末之际&#xff0c;星辰为伴&#xff0c;灯火长明&#xff0c;我终于在 2024 年的最后一天成功上线了 AI 编程项目。回首这一年&am…...

Cesium教程(二十三):Cesium实现下雨场景

文章目录 实现效果代码引入js文件创建容器创建视图定义下雨场景完整代码下载实现效果 代码 在 Cesium 中利用PostProcessStageLibrary实现下雪场景,你可以按照以下步骤进行: 创建一个 PostProcessStage:首先,你需要创建一个PostProcessStage对象,它将用于定义下雪效果的渲…...

SpringCloudAlibaba技术栈-Higress

1、什么是Higress? 云原生网关&#xff0c;干啥的&#xff1f;用通俗易懂的话来说&#xff0c;微服务架构下Higress 就像是一个智能的“交通警察”&#xff0c;它站在你的网络世界里&#xff0c;负责指挥和调度所有进出的“车辆”&#xff08;也就是数据流量&#xff09;。它的…...

uniapp 微信小程序开发使用高德地图、腾讯地图

一、高德地图 1.注册高德地图开放平台账号 &#xff08;1&#xff09;创建应用 这个key 第3步骤&#xff0c;配置到项目中locationGps.js 2.下载高德地图微信小程序插件 &#xff08;1&#xff09;下载地址 高德地图API | 微信小程序插件 &#xff08;2&#xff09;引入项目…...

Springboot:后端接收数组形式参数

1、接收端写法 PermissionAnnotation(permissionName "",isCheckToken true)PostMapping("/batchDeleteByIds")public ReturnBean webPageSelf( NotNull(message "请选择要删除的单据&#xff01;") Long[] ids) {for (Long string : ids) {l…...

Postman[2] 入门——界面介绍

可参考官方 文档 Postman 导航 | Postman 官方帮助文档中文版Postman 拥有各种工具、视图和控件&#xff0c;帮助你管理 API 项目。本指南是对 Postman 主要界面区域的高级概述&#xff1a;https://postman.xiniushu.com/docs/getting-started/navigating-postman 1. Header&a…...

1月第四讲:Java Web学生自习管理系统

一、项目背景与需求分析 随着网络技术的不断发展和学校规模的扩大&#xff0c;学生自习管理系统的需求日益增加。传统的自习管理方式存在效率低下、资源浪费等问题&#xff0c;因此&#xff0c;开发一个智能化的学生自习管理系统显得尤为重要。该系统旨在提高自习室的利用率和…...

【Redis】Redis 典型应用 - 缓存 (cache)

目录 1. 什么是缓存 2. 使用 Redis 作为缓存 3. 缓存的更新策略 3.1 定期生成 3.2 实时生成 4. 缓存的淘汰策略 5. 缓存预热, 缓存穿透, 缓存雪崩 和 缓存击穿 关于缓存预热 (Cache preheating) 关于缓存穿透 (Cache penetration) 关于缓存雪崩 (Cache avalanche) 关…...

HTML——38.Span标签和字符实体

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>span标签和字符实体</title><style type"text/css">h1{text-align: center;}p{text-indent: 2em;}span{color: red;}</style></head><…...

ROS2+OpenCV综合应用--10. AprilTag标签码追踪

1. 简介 apriltag标签码追踪是在apriltag标签码识别的基础上&#xff0c;增加了小车摄像头云台运动的功能&#xff0c;摄像头会保持标签码在视觉中间而运动&#xff0c;根据这一特性&#xff0c;从而实现标签码追踪功能。 2. 启动 2.1 程序启动前的准备 本次apriltag标签码使…...

python Celery 是一个基于分布式消息传递的异步任务队列系统

Celery 是一个基于分布式消息传递的异步任务队列系统&#xff0c;主要用于处理耗时任务、定时任务和周期性任务。它能够将任务分配到多个工作节点&#xff08;Worker&#xff09;上执行&#xff0c;从而提高应用程序的性能和可扩展性。Celery 是 Python 生态中最流行的任务队列…...

嵌入式硬件杂谈(七)IGBT MOS管 三极管应用场景与区别

引言&#xff1a;在现代嵌入式硬件设计中&#xff0c;开关元件作为电路中的重要组成部分&#xff0c;起着至关重要的作用。三种主要的开关元件——IGBT&#xff08;绝缘栅双极型晶体管&#xff09;、MOSFET&#xff08;金属氧化物半导体场效应晶体管&#xff09;和三极管&#…...

麒麟信安云在长沙某银行的应用入选“云建设与应用领航计划(2024)”,打造湖湘金融云化升级优质范本

12月26日&#xff0c;2024云计算产业和标准应用大会在北京成功召开。大会汇集政产学研用各方专家学者&#xff0c;共同探讨云计算产业发展方向和未来机遇&#xff0c;展示云计算标准化工作重要成果。 会上&#xff0c;云建设与应用领航计划&#xff08;2024&#xff09;建云用…...

好用的随机生成图片的网站

官网&#xff1a; Lorem Picsum 获取自定义大小的随机图像 https://picsum.photos/200/300 获取正方形图像 https://picsum.photos/200 获取特定类型的图像 通过添加到 /id/{image} url 的开头来获取特定图像。 https://picsum.photos/id/237/200/300 获取静态随机图像…...

添加 env 配置,解决import路径问题

添加 env 配置&#xff0c;解决import路径问题 { // 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。 // 欲了解更多信息&#xff0c;请访问: https://go.microsoft.com/fwlink/?linkid830387 “version”: “0.2.0”, “configurations”: [ {"name&q…...

Go work stealing 机制

Go语言的Work Stealing&#xff08;工作窃取&#xff09;机制是一种用于调度Goroutines&#xff08;协程&#xff09;的策略&#xff0c;其核心目的是最大化CPU使用率&#xff0c;减少任务调度的开销&#xff0c;并提高并发性能和吞吐量。以下是Go Work Stealing机制的详细解释…...

基础数据结构--二叉树

一、二叉树的定义 二叉树是 n( n > 0 ) 个结点组成的有限集合&#xff0c;这个集合要么是空集&#xff08;当 n 等于 0 时&#xff09;&#xff0c;要么是由一个根结点和两棵互不相交的二叉树组成。其中这两棵互不相交的二叉树被称为根结点的左子树和右子树。 如图所示&am…...

《C++设计模式》策略模式

文章目录 1、引言1.1 什么是策略模式1.2 策略模式的应用场景1.3 本文结构概览 2、策略模式的基本概念2.1 定义与结构2.2 核心角色解析2.2.1 策略接口&#xff08;Strategy&#xff09;2.2.2 具体策略实现&#xff08;ConcreteStrategy&#xff09;2.2.3 上下文&#xff08;Cont…...

JavaScript学习记录6

第一节 算数运算符 1. 概述 JavaScript 共提供10个算术运算符&#xff0c;用来完成基本的算术运算。 加法运算符x y减法运算符 x - y乘法运算符 x * y除法运算符x / y指数运算符x ** y余数运算符x % y自增运算符x 、x自减运算符--x 、x--数值运算符 x负数值运算符-x 减法、…...

如何在没有 iCloud 的情况下将数据从 iPhone 传输到 iPhone

概括 您可能会遇到将数据从 iPhone 转移到 iPhone 的情况&#xff0c;尤其是当您获得新的 iPhone 15/14 时&#xff0c;您会很兴奋并希望将数据转移到它。 使用iCloud最终可以做到这一点&#xff0c;但它的缺点也不容忽视&#xff0c;阻碍了你选择它。例如&#xff0c;您需要…...

Doris安装部署

Doris 概述 Apache Doris由百度大数据部研发&#xff08;之前叫百度 Palo&#xff0c;2018年贡献到 Apache 社区后&#xff0c;更名为 Doris &#xff09;&#xff0c;在百度内部&#xff0c;有超过200个产品线在使用&#xff0c;部署机器超过1000台&#xff0c;单一业务最大可…...

[服务器][教程]Ubuntu24.04 Server开机自动挂载硬盘教程

1. 查看硬盘ID ls -l /dev/disk/by-uuid可以看到对应的UUID所对应的分区 2. 创建挂载文件夹 创建好文件夹即可 3. 修改配置文件 sudo vim /etc/fstab把对应的UUID和创建的挂载目录对应即可 其中# Personal mount points下面的是自己新添加的 &#xff1a;分区定位&#xff…...

io多路复用, select, poll, epoll

系列文章目录 异步I/O操作函数aio_xxx函数 https://blog.csdn.net/surfaceyan/article/details/134710393 文章目录 系列文章目录前言一、5种IO模型二、IO多路复用APIselectpollepoll 三、两种高效的事件处理模式Reactor模式Proactor模式模拟 Proactor 模式基于事件驱动的非阻…...

k8s-1.28.2 部署prometheus

一、prometheus helm仓库 ## 网站地址 # https://artifacthub.io/## prometheus 地址 # https://artifacthub.io/packages/helm/prometheus-community/prometheus. # helm repo add prometheus-community https://prometheus-community.github.io/helm-charts # helm repo …...

记录第一次跑YOLOV8做目标检测

今天是24年的最后一天&#xff0c;终于要向新世界开始破门了&#xff0c;开始深度学习&#xff0c;YOLO来敲门~ 最近做了一些皮肤检测的功能&#xff0c;在传统的处理中经历了反复挣扎&#xff0c;终于要上YOLO了。听过、看过&#xff0c;不如上手体会过~ 1、YOLO是什么&#x…...