R语言老师说R好就业,学就完了
基础语法
cat()可以拼接函数:
r
> cat(1, "加", 1, "等于", 2, '\n')
1 加 1 等于 2
sink():重定向
r
sink("r_test.txt", split=TRUE) # 控制台同样输出
for (i in 1:5)
print(i)
sink() # 取消输出到文件
sink("r_test.txt", append=TRUE) # 控制台不输出,追加写入文件
print("RUNOOB")
r
# 当前工作目录
print(getwd())
# 设置当前工作目录
setwd("/Users/runoob/runoob-test2")
# 查看当前工作目录
print(getwd())
基础运算
r
%% 整除求余
%/% 整除
r
%in% 用于判断元素是否在向量里,返回布尔值,有的话返回 TRUE,没有返回 FALSE。
%*% 用于矩阵与它转置的矩阵相乘。
# 1 到 10 的向量
v <- 1:10
print(v)
# 判断数字是否在向量 v 中
v1 <- 3
v2 <- 15
print(v1 %in% v)
print(v2 %in% v)
# 矩阵与它转置的矩阵相乘
M = matrix( c(2,6,5,1,10,4), nrow = 2,ncol = 3,byrow = TRUE)
t = M %*% t(M)
print(t)
数据类型
变量按对象类型来分是以下 6 种:
向量(vector)
列表(list)
矩阵(matrix)
数组(array)
因子(factor)
数据框(data.frame)
seq(data,from,to,len):等差数列
rep():重复
NA:占位符
r
> toupper("Runoob") # 转换为大写
[1] "RUNOOB"
> tolower("Runoob") # 转换为小写
[1] "runoob"
> nchar("中文", type="bytes") # 统计字节长度
[1] 4
> nchar("中文", type="char") # 总计字符数量
[1] 2
> substr("123456789", 1, 5) # 截取字符串,从 1 到 5
[1] "12345"
> substring("1234567890", 5) # 截取字符串,从 5 到结束
[1] "567890"
> as.numeric("12") # 将字符串转换为数字
[1] 12
> as.character(12.34) # 将数字转换为字符串
[1] "12.34"
> strsplit("2019;10;1", ";") # 分隔符拆分字符串
[[1]]
[1] "2019" "10" "1"
> gsub("/", "-", "2019/10/1") # 替换字符串
[1] "2019-10-1"
r
> (A = matrix(c(1, 3, 2, 4), 2, 2))
[,1] [,2]
[1,] 1 2
[2,] 3 4
> apply(A, 1, sum) # 第二个参数为 1 按行操作,用 sum() 函数
[1] 3 7
> apply(A, 2, sum) # 第二个参数为 2 按列操作
[1] 4 6
判断语句
R 语言提供了以下类型的判断语句:
if 语句
if...else 语句
switch 语句
switch 没有默认参数可用。
循环
R 语言提供的循环类型有:
repeat 循环 用 break
测试+ while 循环
for 循环 +测试
R 语言提供的循环控制语句有:
break 语句
Next 语句 用于 switch
函数
r
function_name <- function(arg_1, arg_2, ...) {
# 函数体
# 执行的代码块
return(output)
}
str():显示对象的结构和内容摘要
字符串
r
paste(..., sep = " ", collapse = NULL):合并字符串
a <- "Google"
b <- 'Runoob'
c <- "Taobao"
print(paste(a,b,c))
print(paste(a,b,c, sep = "-"))
print(paste(letters[1:6],1:6, sep = "", collapse = "="))
paste(letters[1:6],1:6, collapse = ".")
输出结果:
[1] "Google Runoob Taobao"
[1] "Google-Runoob-Taobao"
[1] "a1=b2=c3=d4=e5=f6"
[1] "a 1.b 2.c 3.d 4.e 5.f 6"
列表
r
list_data <- list("runoob", "google", c(11,22,33), 123, 51.23, 119.1)
print(list_data)
输出结果:
[[1]]
[1] "runoob"
[[2]]
[1] "google"
[[3]]
[1] 11 22 33
[[4]]
[1] 123
[[5]]
[1] 51.23
[[6]]
[1] 119.1
r
# 列表包含向量、矩阵、列表
list_data <- list(c("Google","Runoob","Taobao"), matrix(c(1,2,3,4,5,6), nrow = 2),
list("runoob",12.3))
# 给列表元素设置名字
names(list_data) <- c("Sites", "Numbers", "Lists")
# 显示列表
print(list_data)
输出结果:
$Sites
[1] "Google" "Runoob" "Taobao"
$Numbers
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
$Lists
$Lists[[1]]
[1] "runoob"
$Lists[[2]]
[1] 12.3
r
# 列表包含向量、矩阵、列表
list_data <- list(c("Google","Runoob","Taobao"), matrix(c(1,2,3,4,5,6), nrow = 2),
list("runoob",12.3))
# 给列表元素设置名字
names(list_data) <- c("Sites", "Numbers", "Lists")
# 添加元素
list_data[4] <- "新元素"
print(list_data[4])
# 删除元素
list_data[4] <- NULL
# 删除后输出为 NULL
print(list_data[4])
# 更新元素
list_data[3] <- "我替换来第三个元素"
print(list_data[3])
r
# 创建两个列表
list1 <- list(1,2,3)
list2 <- list("Google","Runoob","Taobao")
# 合并列表
merged.list <- c(list1,list2)
# 显示合并后的列表
print(merged.list)
r
# 创建列表
list1 <- list(1:5)
print(list1)
list2 <-list(10:14)
print(list2)
# 转换为向量
v1 <- unlist(list1)
v2 <- unlist(list2)
print(v1)
print(v2)
# 两个向量相加
result <- v1+v2
print(result)
矩阵
r
matrix(data = , nrow = , ncol = , byrow = FALSE,dimnames = NULL)
data 向量,矩阵的数据
nrow 行数
ncol 列数
byrow 逻辑值,为 FALSE 按列排列,为 TRUE 按行排列
dimname 设置行和列的名称
# byrow 为 TRUE 元素按行排列
M <- matrix(c(3:14), nrow = 4, byrow = TRUE)
print(M)
# Ebyrow 为 FALSE 元素按列排列
N <- matrix(c(3:14), nrow = 4, byrow = FALSE)
print(N)
# 定义行和列的名称
rownames = c("row1", "row2", "row3", "row4")
colnames = c("col1", "col2", "col3")
P <- matrix(c(3:14), nrow = 4, byrow = TRUE, dimnames = list(rownames, colnames))
print(P)
数组
r
array(data = NA, dim = length(data), dimnames = NULL)
data - 指定数组的数据源,可以是一个向量、矩阵或列表。
dim - 指定数组的维度,可以是一个整数向量或一个表示维度的元组,默认是一维数组。例如,dim = c(2, 3, 4) 表示创建一个 2x3x4 的三维数组。
dimnames - 可选参数,用于指定数组每个维度的名称,可以是一个包含维度名称的列表。
r
apply(X, MARGIN, FUN, ...)
X:要应用函数的数组或矩阵。
MARGIN:指定应用函数的维度,可以是1表示行,2表示列,或者c(1, 2)表示同时应用于行和列。
FUN:要应用的函数,可以是内置函数(如mean、sum等)或自定义函数。
# 创建两个不同长度的向量
vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)
# 创建数组
new.array <- array(c(vector1,vector2),dim = c(3,3,2))
print(new.array)
# 计算数组中所有矩阵第一行的数字之和
result <- apply(new.array, c(1), sum)
print(result)
数据重塑
cast():函数用于对合并对数据框进行还原
dcast():返回数据框
acast():返回一个向量/矩阵/数组。
包
.libPaths():查看 R 包的安装目录
library():查看已安装的包
install.packages("要安装的包名")
读取文件
r
data <- read.csv("sites.csv", encoding="UTF-8")
# likes 为 222 的数据
retval <- subset(data, likes == 222)
# 写入新的文件
write.csv(retval,"runoob.csv")
newdata <- read.csv("runoob.csv")
print(newdata)
summary():获取关系模型的概要
r
predict(object, newdata)
object - lm() 函数创建的公式。
newdata - 要预测的值。
实例
r
通过自定义一个函数来查找向量中重复次数最多的元素
# 创建向量
getmode <- function(v) {
uniqv <- unique(v)
uniqv[which.max(tabulate(match(v, uniqv)))]
}
# 数字向量
v <- c(2,1,2,3,1,2,3,4,1,5,5,3,2,3)
# 计算结果
result <- getmode(v)
print(result)
# 字符串向量
charv <- c("google","runoob","taobao","runoob","runoob")
# 计算结果
result <- getmode(charv)
print(result)
r
# 创建向量
x <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)
# 计算平均值
result.mean <- mean(x,trim = 0.3)//去掉首尾各 3 个元素
result.mean2 <- mean(c(4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17))
print(result.mean)
print(result.mean2)
总结
我知道的和我觉得不是重点的我就没写,建议搭配前面两篇文章和课本一块使用