Windows R语言(持续更新)
环境安装
R 语言的开发环境本身具备了图形开发环境,这与其他很多工程语言是不同的,所以开发环境最好安装在为桌面个人计算机设计的操作系统上(如 Windows, macOS 或 Ubuntu 桌面版 等)。
首先,我们需要下载 R 语言环境的安装包:
Windows
官方地址:https://cloud.r-project.org/bin/windows/base/
USTC 镜像:https://mirrors.ustc.edu.cn/CRAN/bin/windows/base/
TUNA 镜像:https://mirrors.tuna.tsinghua.edu.cn/CRAN/bin/windows/base/
Linux
官方地址:https://cloud.r-project.org/bin/linux/
USTC 镜像:https://mirrors.ustc.edu.cn/CRAN/bin/linux/
TUNA 镜像:https://mirrors.tuna.tsinghua.edu.cn/CRAN/bin/linux/
macOS
官方地址:https://cloud.r-project.org/bin/macosx/
USTC 镜像:https://mirrors.ustc.edu.cn/CRAN/bin/macosx/
TUNA 镜像:https://mirrors.tuna.tsinghua.edu.cn/CRAN/bin/macosx/
以上的版本有可能是过时的,如果你需要最新版本,可以访问:
清华大学源: https://mirrors.tuna.tsinghua.edu.cn/CRAN/bin/
官网:https://cloud.r-project.org/bin/
Windows 操作系统
当我们在交互式的命令窗口输入以下代码:
print("Hello, world")
输出结果为:
"Hello, world"
R 语言基础
一门新的语言学习一般是从输出 “Hello, World!” 程序开始,R 语言的 “Hello, World!” 程序代码如下:
myString <- "Hello, World!"
print ( myString )
以上实例将字符串 “Hello, World!” 赋值给 myString 变量,然后使用 print() 函数输出。
注意:R 语言赋值使用的是左箭头 <- 符号,不过一些新版本也支持等号 =。
变量
R 语言的有效的变量名称由字母,数字以及点号 . 或下划线 _ 组成。
变量名称以字母或点开头。
变量名 | 是否正确 | 原因 |
---|---|---|
var_name2. | 正确 | 字符开头,并由字母,数字,下划线和点好组成 |
var_name% | 错误 | % 是非法字符 |
2var_name | 错误 | 不能数字开头 |
.var_name,var.name | 正确 | 可以 . 号开头,但是要注意 . 号开头后面不能跟着数字 |
.2var_name | 错误 | . 号开头后面不能跟着数字 |
_var_name | 错误 | 不能以下划线 _ 开头 |
变量赋值
最新版本的 R 语言的赋值可以使用左箭头 <-、等号 = 、右箭头 -> 赋值:
# 使用等号 = 号赋值
> var.1 = c(0,1,2,3)
> print(var.1)
[1] 0 1 2 3# 使用左箭头 <-赋值
> var.2 <- c("learn","R")
> print(var.2)
[1] "learn" "R"# 使用右箭头 -> 赋值
> c(TRUE,1) -> var.3
> print(var.3)
[1] 1 1
查看已定义的变量可以使用 ls() 函数:
> print(ls())
[1] "var.1" "var.2" "var.3"
删除变量可以使用 rm() 函数:
> rm(var.3)
> print(ls())
[1] "var.1" "var.2"
输入输出
print()输出
print()
是 R 语言的输出函数。
和其他编程语言一样,R 语言支持数字、字符等输出。
输出的语句十分简单:
print("RUNOOB")
print(123)
print(3e2)
执行结果:
[1] "RUNOOB"
[1] 123
[1] 300
R 语言与 node.js 和 Python 一样,是解释型的语言,所以我们往往可以像使用命令行一样使用 R 语言。
如果我们在一行上进输入一个值,那么 R 也会把它直接标准化输出:
> 5e-2
[1] 0.05
cat()函数
如果需要输出结果的拼接,我们可以使用 cat()
函数:
> cat(1, "加", 1, "等于", 2, '\n')
1 加 1 等于 2
cat()
函数会在每两个拼接元素之间自动加上空格。
输出内容到文件
R 语言输出到文件的方法十分多样,而且很方便。
cat()
函数支持直接输出结果到文件:
cat("RUNOOB", file="D:/hhh/hhh/1.txt")
这个语句不会在控制台产生结果,而是把 “RUNOOB” 输出到 “/Users/runoob/runoob-test/r_test.txt” 文件中去。
file 参数可以是绝对路径或相对路径,建议使用绝对路径,Windows 路径格式为 D:\\r_test.txt
。
cat("RUNOOB", file="D:\\r_test.txt")
注意:这个操作是"覆盖写入"操作,请谨慎使用,因为它会将输出文件的原有数据清除。如果想"追加写入",请不要忘记设置 append 参数:
cat("GOOGLE", file="D:\\r_test.txt",append=TRUE)
执行以上代码后,打开 r_test.txt 文件内容如下:
RUNOOBGOOGLE
注意:如果出现如下错误:
错误: 由""D:\P"开头的字符串中存在’\P’,但没有这种逸出号
解决方法:
将路径的 \p 换成 /p
sink()
sink() 函数可以把控制台输出的文字直接输出到文件中去:
sink("D:/hhh/hhh/1.txt")
这条语句执行以后,任何控制台上的输出都会被写入到 “D:/hhh/hhh/1.txt” 文件中去,控制台将不会显示输出。
注意:这个操作也是"覆盖写入"操作,会直接清除原有的文件内容。
如果我们依然像保留控制台的输出,可以设置 split 属性:
sink("D:/hhh/hhh/1.txt", split=TRUE)
如果想取消输出到文件,可以调用无参数的 sink :
sink()
实例
sink("D:/hhh/hhh/1.txt", split=TRUE) # 控制台同样输出
for (i in 1:5)print(i)
sink() # 取消输出到文件sink("D:/hhh/hhh/1.txt", append=TRUE) # 控制台不输出,追加写入文件
print("RUNOOB")
执行以上代码,当前目录下会生存一个 1.txt 文件,打开文件内容如下:
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
[1] "RUNOOB"
控制台输出为:
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
文字输入
可能我们会联想到 C 语言中的 scanf 、Java 中的 java.util.Scanner,如果你学习过 Python 可能对 input() 函数更熟悉。但是 R 语言本身作为一种解释型的语言,更类似于一些终端脚本语言(比如 bash 或者 PowerShell),这些语言是基于命令系统的,本身就需要输入和输出且不适合开发面向用户的应用程序(因为他们本身就是给最终用户使用的)。因此 R 语言没有专门再从控制台读取的函数,文字输入在 R 的使用中一直在进行。
从文件读入文字
R 语言中有丰富的文件读取函数,但是如果纯粹的想将某个文件中的内容读取为字符串,可以使用 readLines 函数:
readLines("D:/hhh/hhh/1.txt")
其他方式
除了文字的简单输入输出以外,R 还提供了很多输入数据和输出数据的方法,R 语言最方便的地方就是可以将数据结构直接保存到文件中去,而且支持保存为 CSV、Excel 表格等形式,并且支持直接地读取。这对于数学研究者来说无疑是非常方便的。但是这些功能对于 R 语言的学习影响不大,我们将在之后的章节提到。
工作目录
对于文件操作,我们需要设置文件的路径,R 语言可以通过以下两个行数来获取和设置当前的工作目录:
- getwd() : 获取当前工作目录
- setwd() : 设置当前工作目录
# 当前工作目录
print(getwd())# 设置当前工作目录
setwd("随便设置一个目录")# 查看当前工作目录
print(getwd())
注释
注释主要用于一段代码的解析,可以让阅读者更易理解,编程语言的注释会被编译器忽略掉,且不会影响代码的执行。
一般编程语言的注释分为单行注释与多行注释,但是 R 语言只支持单行注释,注释符号为 #
。
其实如果有多行注释我们只需要在每一行添加 #
号就好了。
单行注释:
# 这是我的第一个编程代码
myString <- "Hello, World!"print ( myString )
多行注释:
# R 语言实现两个数相加# 变量赋值
a <- 9
b <- 4# 输出结果
print(a + b)
基础运算
赋值
一般语言的赋值是 = 号,但是 R 语言是数学语言,所以赋值符号与我们数学书上的伪代码很相似,是一个左箭头 <- :
a <- 123
b <- 456
print(a + b)
以上代码执行结果:
[1] 579
这个赋值符号是 R 语言的一个形式上的优点和操作上的缺点:形式上更适合数学工作者,毕竟不是所有的数学工作者都习惯于使用 = 作为赋值符号。
操作上来讲,< 符号和 - 符号都不是很好打的字符,这会让很多程序员不适应。因此,R 语言的比较新的版本也支持 = 作为赋值符:
a = 123
b = 456
print(a + b)
这也是合法的 R 程序。
注意:很难考证从 R 的那个版本开始支持了 = 赋值,但是本教程习用的 R 版本是 4.0.0。
数学运算符
下表列出了主要的数学运算符以及他们的运算顺序:
优先级 | 符号 | 含义 |
---|---|---|
1 | () | 括号 |
2 | ^ | 乘方运算 |
3 | %% | 整除求余 |
%/% | 整除 | |
4 | * | 乘法 |
/ | 除法 | |
5 | + | 加法 |
- | 减法 |
以下实例演示了简单的数学运算:
> 1 + 2 * 3
[1] 7
> (1 + 2) * 3
[1] 9
> 3 / 4
[1] 0.75
> 3.4 - 1.2
[1] 2.2
> 1 - 4 * 0.5^3
[1] 0.5
> 8 / 3 %% 2
[1] 8
> 8 / 4 %% 2
[1] Inf
> 3 %% 2^2
[1] 3
> 10 / 3 %/% 2
[1] 10
关系运算符
下表列出了 R 语言支持的关系运算符,关系运算符比较两个向量,将第一向量与第二向量的每个元素进行比较,结果返回一个布尔值。
运算符 | 描述 |
---|---|
> | 判断第一个向量的每个元素是否大于第二个向量的相对应元素。 |
< | 判断第一个向量的每个元素是否小于第二个向量的相对应元素。 |
== | 判断第一个向量的每个元素是否等于第二个向量的相对应元素。 |
!= | 判断第一个向量的每个元素是否不等于第二个向量的相对应元素。 |
>= | 判断第一个向量的每个元素是否大于等于第二个向量的相对应元素。 |
<= | 判断第一个向量的每个元素是否小于等于第二个向量的相对应元素。 |
v <- c(2,4,6,9)
t <- c(1,4,7,9)
print(v>t)
print(v < t)
print(v == t)
print(v!=t)
print(v>=t)
print(v<=t)
执行以上代码输出结果为:
[1] TRUE FALSE FALSE FALSE
[1] FALSE FALSE TRUE FALSE
[1] FALSE TRUE FALSE TRUE
[1] TRUE FALSE TRUE FALSE
[1] TRUE TRUE FALSE TRUE
[1] FALSE TRUE TRUE TRUE
逻辑运算符
下表列出了 R 语言支持的逻辑运算符,可用于数字、逻辑和复数类型的向量。
大于 1 的数字都为 TRUE。
逻辑运算符比较两个向量,将第一向量与第二向量的每个元素进行比较,结果返回一个布尔值。
运算符 | 描述 |
---|---|
& | 元素逻辑与运算符,将第一个向量的每个元素与第二个向量的相对应元素进行组合,如果两个元素都为 TRUE,则结果为 TRUE,否则为 FALSE。 |
| | 元素逻辑或运算符,将第一个向量的每个元素与第二个向量的相对应元素进行组合,如果两个元素中有一个为 TRUE,则结果为 TRUE,如果都为 FALSE,则返回 FALSE。 |
! | 逻辑非运算符,返回向量每个元素相反的逻辑值,如果元素为 TRUE 则返回 FALSE,如果元素为 FALSE 则返回 TRUE。 |
&& | 逻辑与运算符,只对两个向量对第一个元素进行判断,如果两个元素都为 TRUE,则结果为 TRUE,否则为 FALSE。 |
II | 逻辑或运算符,只对两个向量对第一个元素进行判断,如果两个元素中有一个为 TRUE,则结果为 TRUE,如果都为 FALSE,则返回 FALSE。 |
v <- c(3,1,TRUE,2+3i)
t <- c(4,1,FALSE,2+3i)
print(v&t)
print(v|t)
print(!v)# &&、||只对第一个元素进行比较
v <- c(3,0,TRUE,2+2i)
t <- c(1,3,TRUE,2+3i)
print(v&&t)v <- c(0,0,TRUE,2+2i)
t <- c(0,3,TRUE,2+3i)
print(v||t)
赋值运算符
R 语言变量可以使用向左,向右或等于操作符来赋值。
下表列出了 R 语言支持的赋值运算符。
运算符 | 描述 |
---|---|
<− / = / <<− | 向左赋值。 |
−> / −>> | 向右赋值。 |
# 向左赋值
v1 <- c(3,1,TRUE,"runoob")
v2 <<- c(3,1,TRUE,"runoob")
v3 = c(3,1,TRUE,"runoob")
print(v1)
print(v2)
print(v3)# 向右赋值
c(3,1,TRUE,"runoob") -> v1
c(3,1,TRUE,"runoob") ->> v2
print(v1)
print(v2)
执行以上代码输出结果为:
[1] "3" "1" "TRUE" "runoob"
[1] "3" "1" "TRUE" "runoob"
[1] "3" "1" "TRUE" "runoob"
[1] "3" "1" "TRUE" "runoob"
[1] "3" "1" "TRUE" "runoob"
Windows R语言(持续更新)相关推荐
- r语言 linux windows,R 语言 Windows 环境 安装 说明
这篇整理一下Windows 环境下的R 语言的安装. 相关阅读: 一.R 相关软件下载 1.1 R 基础包 Base 里的是基本的安装包,windows 下R 2.14.1 是47M. 1.2 Rto ...
- Windows快捷键 (持续更新)
相对来说比较全的快捷键了 Ctrl+A 全选中(包括字体文件或者文件夹) Ctrl+C 复制被选中的项目(包括字体文件或者文件夹) Ctrl+D 除了删除选中项 在浏览器上还有收藏网页的作用 Ctrl ...
- 解决一个R语言/Rstudio更新报错问题
某次更新R studio之后,运行代码总是出现下面这个报错,不管是导入数据还是rm(list=ls()). Error in exists(cacheKey, where = .rs.WorkingD ...
- Mac版R语言入门(一)R语言入门操作
文章更新于2023年1月29日: 视频教程--微信公众号:R语言数据分析与实践 bilibili: R语言数据分析与实践 CSDN:ZhenniLi 第一集: ...
- R语言绘图、数据处理学习记录持续更新
目录 20220411--基础知识学习 20220412--读写操作和基本函数 20220415--循环语句学习 20220418--数据框的操作 20220419--可视化练习 20230107-- ...
- Go语言开发学习笔记(持续更新中)
Go语言开发学习笔记(持续更新中) 仅供自我学习 更好的文档请选择下方 https://studygolang.com/pkgdoc https://www.topgoer.com/go%E5%9F% ...
- 055B ENMTools教程-基于R语言对MaxEnt模型优化-MaxEnt调参教程--更新日期2021-9
055B-1 视频附带资料下载和密码:软件-数据-文献下载-持续更新 055B-2 ENMTools软件下载安装 055B-3 R软件和工具包安装 055B-4 生物气候因子的精度说明与选择方法(理论 ...
- web安全从基础术语、windows/linux基础到安全漏洞/病毒木马挖掘与分析利用(持续更新)
web安全知识从基础术语.windows/linux基础到安全漏洞/病毒木马挖掘与分析利用(持续更新) 专业术语 web环境搭建 windows基础 linux基础 linux系统命令 linux命令 ...
- VSCode下配置R语言环境(Windows)
本文介绍Windows下在VSCode中使用R语言的配置过程. 最后更新日期 2021/12/2 文章目录 更新信息 系统环境 VSCode插件安装 python(3)下安装radian R 包安装 ...
- R语言 - 安装R及RStudio(Linux、Windows双重记录)
目录 Linux - B/S模式 1. 安装R语言环境 2. 重启系统 3. 验证是否安装成功 4. 安装deb文件安装器 5. 安装RStudio Server 6. 多用户共用一个libpath( ...
最新文章
- 顺时针打印二维数组C语言递归,按顺时针打印矩阵
- python 类实例化理解
- 单元测试中,模拟一个新对象
- 研发应该懂的binlog知识(下)
- pg高性能服务器,Pgpool-II 负载均衡对PG的性能影响
- Redis学习(5)-常用命令
- 根据控制点坐标对完成坐标转换
- java 监听端口_java游戏服务器检查报告(经验分享)
- js密码强度正则表达式_相信我,这20个正则表达式,能让你少写1000多行代码,建议收藏...
- E680手机内存已满终极解决方案
- janusgraph 引入 java,从头开始学JanusGraph 0.4
- 辞职专心造火箭,贝佐斯能追上马斯克吗?
- 今天的码农女孩学习了关于python元祖和字典的知识以及结合前面学的知识做了四个小练习
- 投资组合管理-风险分散与马科维茨均值方差模型
- Java OOP 7 JAVA 集合框架
- 算法:一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法.
- iPhone 定位记录「重要地点」有多危险?用这招秒查另一半行踪
- Excel 时间格式相减
- java web胖客户端,【转载】:瘦客户端、胖客户端、富客户端
- Java实现手机发送短信验证码
热门文章
- SHH could not initialize proxy - the owning Session was closed 和延迟加载问题
- 【不忘初心】经典珍藏 LTSB|1709|1809|LTSC 四版集合八合一[纯净精简版]2020.07.20
- python代码情话_python教你谈恋爱-之-土味情话5000条
- 年终报告:通过3个维度,回看2022全球电商市场的“多样性”
- 底层码农的Stanford梦 --- 从SCPD开始 [转]
- 周凯:如何利用数据挖掘让RTB广告效果倍增?
- 微信小程序修改data,页面数据实时更新
- 服务器ping不通,但是远程桌面可以连接上
- java 走马灯程序_微信小程序实现简单跑马灯效果
- ubuntu deepin-wine 微信之后打不开