R 语言基础

2023/9/30 16:25:32

R 语言基础

一门新的语言学习一般是从输出 “Hello, World!” 程序开始,R 语言的 “Hello, World!” 程序代码如下:

## 实例(helloworld.R)

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"

上一章节中我们已经学会来如何安装 R 的编程环境,接下来我们将为大家介绍 R 语言的交互式编程与文件脚本编程。

交互式编程

我们只需要在命令行中执行 R 命令就可以进入交互式的编程窗口:

R

执行完这个命令后会调出 R 语言的解释器,我们在 > 符后面输入代码即可。

交互式命令可以通过输入 q() 来退出:

> q()
Save workspace image?[y/n/c]: y

文件脚本

R 语言文件后缀为 .R

接下来我们创建一个 runoob-test.R 文件:代码如下:

## runoob-test.R 文件

myString <- "RUNOOB"

print ( myString )

接下来我们在命令行窗口使用 Rscript 来执行该脚本:

Rscript runoob-test.R

输出结果如下:

[1]"RUNOOB"


输入输出

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="/Users/runoob/runoob-test/r_test.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="/Users/runoob/runoob-test/r_test.txt", append=TRUE)

执行以上代码后,打开 r_test.txt 文件内容如下:

RUNOOBGOOGLE

sink()

sink() 函数可以把控制台输出的文字直接输出到文件中去:

sink("/Users/runoob/runoob-test/r_test.txt")

这条语句执行以后,任何控制台上的输出都会被写入到 “/Users/runoob/runoob-test/r_test.txt” 文件中去,控制台将不会显示输出。

注意:这个操作也是"覆盖写入"操作,会直接清除原有的文件内容。

如果我们依然像保留控制台的输出,可以设置 split 属性:

sink("/Users/runoob/runoob-test/r_test.txt", split=TRUE)

如果想取消输出到文件,可以调用无参数的 sink :

sink()
## 实例

sink("r_test.txt", split=TRUE)  # 控制台同样输出
for (i in 1:5)
print(i)
sink()   # 取消输出到文件

sink("r_test.txt", append=TRUE) # 控制台不输出,追加写入文件
print("RUNOOB")

执行以上代码,当前目录下会生存一个 r_test.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("/Users/runoob/runoob-test/r_test.txt")

执行结果:

[1]"RUNOOBGOOGLE"

读取结果是两个字符串,分别是所读取的文件包含的两行内容。

注意: 所读取的文本文件每一行 (包括最后一行) 的结束必须有换行符,否则会报错。

其他方式

除了文字的简单输入输出以外,R 还提供了很多输入数据和输出数据的方法,R 语言最方便的地方就是可以将数据结构直接保存到文件中去,而且支持保存为 CSV、Excel 表格等形式,并且支持直接地读取。这对于数学研究者来说无疑是非常方便的。但是这些功能对于 R 语言的学习影响不大,我们将在之后的章节提到。

工作目录

对于文件操作,我们需要设置文件的路径,R 语言可以通过以下两个行数来获取和设置当前的工作目录:

  • getwd() : 获取当前工作目录
  • setwd() : 设置当前工作目录
## 实例

# 当前工作目录

print(getwd())

# 设置当前工作目录

setwd("/Users/runoob/runoob-test2")

# 查看当前工作目录

print(getwd())

执行以上代码输出结果为:

[1]"/Users/runoob/runoob-test"
[1]"/Users/tianqixin/runoob-test2"

http://www.jnnr.cn/a/369272.html

相关文章

SQL注入进阶练习(二)常见绕过手段、防御的解决方案

常见绕过手段、防御的解决方案1.常用SQL注入绕过手段1.1 注释符绕过1.2 大小写绕过1.3 内联注释绕过1.4 双写关键字绕过1.5 特殊编码绕过1.6 空格过滤绕过1.7 过滤 or and xor (异或) not 绕过1.8 过滤等号绕过1.9 过滤大小于号绕过1.10 过滤引号绕过1.11 过滤逗号绕过1.12 过滤…

★LDO相关

1.型号 TPS79501 TPS79301 2.PSRR值&#xff0c;频率 TPS795_50dB&#xff0c;10kHz TPS793_70dB&#xff0c;10kHz 电源抑制比&#xff1a;供电电压纹波对输出电压影响&#xff0c;值越高越好&#xff08;某个频段的AC从输入到输出的衰减程度&#xff0c;衰减越高&#x…

提升集群吞吐量与稳定性的秘诀: Dubbo 自适应负载均衡与限流策略实现解析

作者&#xff1a;刘泉禄 整体介绍 本文所说的“柔性服务”主要是指 consumer 端的负载均衡和 provider 端的限流两个功能。在之前的 Dubbo 版本中&#xff0c;负载均衡部分更多的考虑的是公平性原则&#xff0c;即 consumer 端尽可能平等的从 provider 中作出选择&#xff0c;…

笔记本电脑自带录屏在哪?一步教您找到

案例&#xff1a;怎么找到笔记本电脑上的自带录屏功能&#xff1f; “从网上了解到笔记本电脑有自带的录屏功能&#xff0c;但我不知道笔记本自带的录屏叫什么名字&#xff0c;也不知道笔记本自带录屏在哪。有没有小伙伴知道&#xff1f;” 随着科技的不断进步&#xff0c;越…

【面试题】简单的说说对原型链的了解

大厂面试题分享 面试题库 前后端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;前端面试题库 web前端面试题库 VS java后端面试题库大全 前言 作为Javascript的基础之一&#xff0c;原型一直贯穿我们的JS代码并且成为面试的常考…

基于Python长时间序列遥感数据处理及在全球变化、物候提取、植被变绿与固碳分析、生物量估算与趋势分析等领域中的应用

植被是陆地生态系统中最重要的组分之一&#xff0c;也是对气候变化最敏感的组分&#xff0c;其在全球变化过程中起着重要作用&#xff0c;能够指示自然环境中的大气、水、土壤等成分的变化&#xff0c;其年际和季节性变化可以作为地球气候变化的重要指标。此外&#xff0c;由于…

eclipse上的Java静态分析工具

相比动态测试而言。静态分析效率高&#xff0c;成本较低&#xff0c;对于提高产品质量非常重要。 下面介绍几个elcipse上的静态分析插件 1. findugs a) 安装findbugs插件 1&#xff09;点击菜单 Help ->Eclipse Marketplace 在弹出窗口中的搜索条件中输入 ”findbugs“后…

[素数筛][容斥原理]:埃拉托斯特尼筛法

求解问题&#xff1a;不超过一个给定正整数N的素数的个数 方法介绍&#xff1a; 根据合数的性质&#xff1a;一个合数可以被一个不超过它的平方根的素数整除 这里举例N100&#xff1a; 介绍&#xff1a;为了找出不超过100的素数个数&#xff0c;首先根据合数的性质可以知道…

Docker详解,windows上安装与使用

Hi I’m Shendi Docker详解&#xff0c;windows上安装与使用 Docker详解 Docker 容器是一个开源的应用容器引擎&#xff0c;让开发者可以以统一的方式打包他们的应用以及依赖包到一个可移植的容器中&#xff0c;然后发布到任何安装了docker引擎的服务器上&#xff08;包括流行的…

面试时被问:为什么裁员只裁你,不裁别人,该怎么回答?

面试官总有各种奇奇怪怪的问题&#xff0c;比如这个&#xff1a;为什么裁员裁了你&#xff0c;而不是裁别人&#xff1f;这个充满恶意的问题该怎么回答&#xff1f;网友给出了各种各样的答案&#xff0c;有人说&#xff0c;就说行业动荡&#xff0c;不稳定。有人说&#xff0c;…

Golang每日一练(leetDay0023)

目录 67. 二进制求和 Add Binary &#x1f31f; 68. 文本左右对齐 Text Justification &#x1f31f;&#x1f31f;&#x1f31f; 69. x 的平方根 Sqrt x &#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C…

vscode软件设置头文件路径的方法

一. 设置头文件路径原因 在使用 vscode 软件进行 C 开发过程中&#xff0c;有些 .c 文件引用的头文件&#xff0c;提示会找不到头文件路径。因此&#xff0c;vscode 软件需要设置头文件路径。 二. vscode设置头文件路径 在 vscode 软件打开的情况下&#xff0c;默认打开一…

UNIX环境高级编程——UNIX基础知识

1.1 引言 所有操作系统都为它们所运行的程序提供服务&#xff0c;典型的服务包括&#xff1a; 执行新程序打开文件读文件分配存储区获得当前时间… 1.2 UNIX体系结构 可将操作系统定义为一种软件&#xff0c;它控制计算机硬件资源&#xff0c;提供程序运行环境&#xff0c;…

JAVA打飞机游戏的设计与实现

手机软件现状 在信息社会中&#xff0c;手机及其他无线设备越来越多的走进普通百姓的工作和生活&#xff0c;随着信息网络化的不断进展&#xff0c;手机及其他无线设备上网络势在必行。但是传统手机存在以下弊端&#xff1a; 1. 传统手机出厂时均由硬件厂商固化程序&#xf…

Spring Boot使用GraphQL开发Web API

目录前言Spring Boot中GraphQL的实现方案前言 传统的Restful API 存在诸多的问题&#xff0c;首先它无法控制返回的字段&#xff0c;前端也无法预判后端的返回结果&#xff0c;另外不同的返回结果对应不同的请求地址&#xff0c;这就导致了多次请求的问题。而GraphQL正是基于这…

9.网络爬虫—MySQL基础

网络爬虫—MySQL基础MySQL安装教程MySQL登录Mysql数据库操作显示数据库创建数据库删除数据库查询数据库使用数据库Mysql数据类型Mysql数据表创建Mysql增删查改PyMysql安装Python的MySQL库连接数据库增添字段操作游标PyMysql插入PyMysql查询PyMysql更新PyMysql删除前言&#xff…

生成式 AI 背后的共同框架:Stable Diffusion、DALL-E、Imagen

前言 如果你对这篇文章感兴趣&#xff0c;可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」&#xff0c;查看完整博客分类与对应链接。 框架 这些生成式 AI 的整体功能为&#xff1a;输入「文字」&#xff0c;返回「图像」&#xff0c;即 Text-to-image Gener…

计算机发展史之阿达·洛芙莱斯

你一定想不到世界上最早的程序员竟然是一位女士&#xff0c;而且还有专门的编程语言为了纪念她而命名&#xff0c;她就是阿达洛芙莱斯&#xff08;Ada Lovelace&#xff09; 奥古斯塔阿达拜伦是她的原名&#xff0c;因为嫁给威廉金后晋封为洛芙莱斯伯爵&#xff0c;而后改的名字…

R -- 卡方检验--原理及应用

1.单样本方差同质性检验 2.适合性/拟合优度/吻合性检验 或者公式书写如下&#xff1a; 图片来源&#xff1a;https://www.bilibili.com/opus/730576389651038260?fromsearch&spm_id_from333.337.0.0 例题 3.独立性检验 如何理根据列联表推算论值 E11 sum(Row1) * sum(…

(九)大数据实战——hadoop集群的历史服务器配置与日志聚集

前言 前面的章节我们已经介绍过了关于hadoop集群部署的内容&#xff0c;延续上一节的内容。本节我们主要介绍一下关于hadoop集群历史服务器的配置与启动&#xff0c;方便我们查看hadoop操作过程中的一些任务执行情况。同时我们也配置一下hadoop集群的日志聚集功能&#xff0c;…
最新文章