当前位置: 首页 > 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…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查

在对接支付宝API的时候&#xff0c;遇到了一些问题&#xff0c;记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

R语言AI模型部署方案:精准离线运行详解

R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施&#xff0c;由雇主和个人按一定比例缴纳保险费&#xff0c;建立社会医疗保险基金&#xff0c;支付雇员医疗费用的一种医疗保险制度&#xff0c; 它是促进社会文明和进步的…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

生成 Git SSH 证书

&#x1f511; 1. ​​生成 SSH 密钥对​​ 在终端&#xff08;Windows 使用 Git Bash&#xff0c;Mac/Linux 使用 Terminal&#xff09;执行命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​&#xff1a; -t rsa&#x…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中&#xff0c;高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司&#xff0c;近期做出了一个重大技术决策&#xff1a;弃用长期使用的 Nginx&#xff0c;转而采用其内部开发…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...