目录
一.函数相关
1.函数定义:function
2.调用文件:source
3. Call
4.Recall
5.browser
6.debug和undebug
7.trace
8.traceback
9.options
10.missing
11.nargs
12.stop
13.指定退出时执行的表达式
14.expression和eval
15.system.time
16. invisible
18.deparse
19.do.call
20.dput
21.environment
22.new.env
23.parent.env
24.formals
25.interactive
26.is.finite
27.is.function
28.is.language
29.is.recursive
30.match.arg
31.match.call
32.match.fun
33.name
34.parse
35.quote
36.deparse
37.substitute
38.warning
二.输入输出相关
1.cat,print
2.sink
3.dump,save,dput,write
4.scan,read.table,readlines, load,dget
三.工作环境相关
1.ls,objects
2.rm(remove)
3.q(quit)
4.First,Last
5.options
6.?,help,help.start,apropos
7.data
8.head
9.tail
一.函数相关
1.函数定义:function
my_sum <- function(x, y) {
result <- x + y
return(result)
}
2.调用文件:source
source("file_path.R")
#file_path.R是文件执行的路径
3. Call
my_function <- "mean"
my_arguments <- c(1, 2, 3, 4, 5)
my_call <- call(my_function, my_arguments)
result <- eval(my_call)
#输出 [1] 3
4.Recall
在递归函数中进行递归调用。
factorial <- function(n) {
if (n <= 1) {
return(1)
} else {
return(n * Recall(n - 1))
}
}
result <- factorial(5)
print(result) # 输出结果:120
5.browser
插入调试点,逐行执行代码
my_function <- function(x, y) {
z <- x + y
browser() # 在这里插入调试点
result <- z * 2
return(result)
}
result <- my_function(3, 4)
print(result)
6.debug和undebug
debug:启用调试模式
undebug:禁用调试模式
my_function <- function(x, y) {
z <- x + y
result <- z * 2
return(result)
}
debug(my_function) # 启用调试模式
result <- my_function(3, 4)
print(result)
undebug(my_function) # 禁用调试模式
7.trace
添加跟踪代码,以便追踪函数的执行过程。添加跟踪代码后,每次调用函数时都会输出相关信息。
my_function <- function(x, y) {
z <- x + y
result <- z * 2
return(result)
}
trace(my_function, quote(print(x)), at = 2) # 添加跟踪代码
result <- my_function(3, 4)
print(result)
untrace(my_function) # 移除跟踪代码
8.traceback
当程序发生错误时,可以使用
traceback()
来查看导致错误的函数调用链,帮助定位错误来源。
my_function <- function(x, y) {
z <- x + y
result <- z * 2
stop("An error occurred")
return(result)
}
result <- my_function(3, 4)
print(result)
traceback() # 显示函数调用堆栈
9.options
常用参数
digits
:设置浮点数的显示精度。默认值为 7,表示小数点后显示 7 位有效数字。例如,options(digits = 3)
将显示小数点后的 3 位有效数字。
scipen
:控制科学计数法的显示方式。默认值为 0,表示使用标准的十进制显示。通过调整scipen
的值,可以选择是否使用科学计数法以及在何时启用科学计数法。
warn
:控制警告信息的处理方式。默认值为 0,表示将警告信息显示为简短的警告消息。将warn
设置为正整数可以控制警告信息的显示程度。
max.print
:控制打印输出的最大行数。默认值为 9999,表示最大打印行数。如果需要限制打印输出的行数,可以通过设置max.print
参数来实现。
error
:控制错误信息的处理方式。默认值为dump.frames
,表示在发生错误时保存调用堆栈并进入调试模式。通过修改error
参数,可以选择如何处理错误信息,如简单地中断程序执行或保存调用堆栈等。
stringsAsFactors
:控制是否将字符型变量默认转换为因子型。默认值为TRUE
,表示字符型变量在需要时被自动转换为因子型。如果想要禁止自动转换,请设置stringsAsFactors = FALSE
。
options(digits = 3) # 设置数字的显示精度为 3
x <- sqrt(2)
print(x) # 输出结果:1.41
10.missing
用于判断函数中的虚参(没有默认值的参数)是否有对应的实参传递
my_function <- function(x, y) {
if (missing(y)) {
print("y is missing")
} else {
print("y is provided")
}
}
my_function(10) # 输出结果:y is missing
my_function(10, 20) # 输出结果:y is provided
11.nargs
nargs
是一个变量,用于获取函数调用时传递的参数个数。
my_function <- function(...) {
num_args <- nargs()
print(paste("Number of arguments:", num_args))
}
my_function(1, 2, 3) # 输出结果:Number of arguments: 3
my_function("a", "b") # 输出结果:Number of arguments: 2
12.stop
在函数执行过程中终止函数的执行,并抛出一个错误信息。
my_function <- function(x) {
if (x <= 0) {
stop("Input must be a positive number")
}
# 执行其他操作
}
my_function(-5) # 抛出错误:Input must be a positive number
13.指定退出时执行的表达式
cleanup <- function() {
cat("Performing cleanup operations...\n")
# 执行清理操作的代码
}
on.exit(cleanup())
14.expression和eval
expression()
函数用于构建一个表达式对象,该对象可以在后续代码中使用eval()
来进行求值。
expr <- expression(2 + 3 * 4)
result <- eval(expr)
print(result) # 输出结果:14
15.system.time
用于测量执行给定表达式所需的时间。
result <- system.time({
# 执行需要计时的代码
for (i in 1:1000000) {
sqrt(i)
}
})
print(result) # 输出计时信息
16. invisible
在函数内部生成结果,但不立即显示结果
my_function <- function() {
result <- 10
invisible(result) # 隐藏输出结果
}
output <- my_function()
print(output) # 不会显示输出结果
17.menu
在控制台上显示一个字符列表菜单,并允许用户选择其中的选项
options <- c("Option 1", "Option 2", "Option 3", "Exit")
selection <- menu(options, title = "Select an option:")
if (selection == length(options)) {
#如果选项是4(length),最后一个选项 "Exit" 的索引,则退出
cat("Exiting the program...\n")
} else {
cat("You selected:", options[selection], "\n")
}
18.deparse
将 R 对象转换为字符向量
x <- 10
y <- c(1, 2, 3)
dep_x <- deparse(x)
dep_y <- deparse(y)
print(dep_x) # 输出结果:[1] "10"
print(dep_y) # 输出结果:[1] "1" "2" "3"
19.do.call
它接受一个函数对象和参数列表,并在给定上下文中执行该函数。
add_numbers <- function(a, b) {
return(a + b)
}
args <- list(a = 5, b = 3)
result <- do.call(add_numbers, args)
print(result) # 输出结果:8
20.dput
将 R 对象的表示形式以 R 代码的方式输出到控制台或文件中。
x <- c("apple", "banana", "cherry")
dput(x)
# 输出结果:
# c("apple", "banana", "cherry")
21.environment
使用
environment()
获取当前环境
current_env <- environment()
print(current_env)
22.new.env
创建一个新的空环境
custom_env <- new.env()
assign("x", 10, envir = custom_env)#使用 assign() 将值 10 分配给变量 x
print(custom_env$x)
23.parent.env
获取当前环境的父环境
parent <- parent.env(environment())
print(parent)
24.formals
获取或设置函数的形式参数和其默认值
(1) 获取或设置函数的形式参数和其默认值
# 定义一个简单的函数
my_function <- function(a, b = 10, c = "hello") {
# 函数体
}
# 使用 formals() 获取函数的形式参数和默认值
parameters <- formals(my_function)
print(parameters)
(2)设置函数的形式参数和默认值:
# 使用 formals() 设置函数的形式参数和默认值
formals(my_function) <- list(a = 20, b = 30, c = "world")
# 打印修改后的形式参数和默认值
print(formals(my_function))
25.interactive
interactive
是一个逻辑值(TRUE
或FALSE
),用于判断当前 R 环境是否为交互式环境当 R 运行在交互式模式下时,
interactive
的值为TRUE
;当 R 运行在非交互式(批处理)模式下时,
interactive
的值为FALSE
。
if (interactive()) {
print("Running in interactive mode")
} else {
print("Running in non-interactive mode")
}
26.is.finite
用于检查一个值是否为有限数值(finite numeric)
x <- 10
y <- Inf
print(is.finite(x)) # 输出结果:TRUE
print(is.finite(y)) # 输出结果:FALSE
# y 是无穷大值(Infinity)
27.is.function
用于判断一个对象是否为函数(function)。它返回一个逻辑值(TRUE 或 FALSE)
my_function <- function(x) {
return(x * 2)
}
print(is.function(my_function)) # 输出结果:TRUE
print(is.function(x)) # 输出结果:FALSE
28.is.language
用于判断一个对象是否为语言对象(language object)。语言对象是 R 中表示表达式和控制结构的一种特殊数据类型。它返回一个逻辑值(TRUE 或 FALSE)。
expr <- quote(print("Hello, world!"))
print(is.language(expr)) # 输出结果:TRUE
print(is.language(x)) # 输出结果:FALSE
# x 是一个变量,不是语言对象
29.is.recursive
用于检查一个对象是否包含递归元素。如果对象是递归的,则返回 TRUE;否则返回 FALSE。
x <- list(1, 2, list(3, 4))
print(is.recursive(x)) # 输出结果:TRUE
print(is.recursive(5)) # 输出结果:FALSE
30.match.arg
将输入参数与指定的可选值进行匹配。它返回与输入参数最匹配的选项值,或者如果没有匹配的选项,则返回一个默认值。
my_function <- function(option) {
arg <- match.arg(option, choices = c("option1", "option2", "option3"), several.ok = FALSE)
print(arg)
}
my_function("option2") # 输出结果:option2
my_function("option4") # 输出结果:Error in match.arg(option, choices = c("option1", "option2", "option3"), several.ok = FALSE) :
# 'arg' must be one of "option1", "option2", "option3"
31.match.call
用于获取当前函数的调用。它返回一个表示函数调用的语法树(call)对象。
my_function <- function(x, y) {
call <- match.call()
print(call)
}
my_function(10, 20)
#输出 my_function(x = 10, y = 20)
32.match.fun
用于匹配字符串或符号与函数对象。它返回与输入匹配的函数对象。
add_numbers <- function(a, b) {
return(a + b)
}
func <- match.fun("add_numbers")
result <- func(10, 20)
print(result)
#输出 [1] 30
33.name
获取对象的名称,并返回一个表示对象名称的字符字符串。
x <- 10
obj_name <- name(x)
print(obj_name) # 输出结果:"x"
34.parse
将字符字符串解析为 R 表达式(expression)对象
它返回一个表示解析后的表达式的对象。
expr_str <- "2 * (x + y)"
expr <- parse(text = expr_str)
print(expr) # 输出结果:expression(2 * (x + y))
35.quote
用于创建一种特殊的对象,称为表达式(expression),来表示一段代码或一个表达式本身。它返回一个表示给定代码或表达式的对象。
(1)引用表达式
x <- 10
y <- 5
expr <- quote(x + y)
print(expr) # 输出结果:x + y
(2)使用eval()进行求值
x <- 10
y <- 5
expr <- quote(x + y)
result <- eval(expr)
print(result) # 输出结果:15
36.deparse
用于将表达式(expression)对象转换为字符字符串。它返回一个表示表达式的字符向量。
expr <- quote(2 * (x + y))
expr_str <- deparse(expr)
print(expr_str) # 输出结果:"2 * (x + y)"
37.substitute
用于将符号(symbol)替换为表达式中的相应值或参数。它返回一个表示替换后的表达式的对象。
x <- 10
y <- 5
expr <- substitute(x + y, list(x = 20))
print(expr) # 输出结果:20 + y
38.warning
用于生成警告信息
x <- 10
if (x > 5) {
warning("x 大于 5,可能导致意外结果")
}
二.输入输出相关
1.cat,print
在控制台显示对象或输出结果。
(1)cat
#连接(concatenate)并打印一个或多个对象到控制台,以文本形式显示
x <- 10
y <- 20
cat("x 的值为", x, ",y 的值为", y)
#控制台会显示
x 的值为 10 ,y 的值为 20
(2)print
#使用 print() 函数打印变量 x 和 y 的值。结果会在控制台显示
x <- 10
y <- 20
print(x)
print(y)
#控制台显示
[1] 10
[1] 20
2.sink
sink()
函数用于改变输出的目的地。它可以将输出重定向到文件或其他设备,从而控制输出的保存或显示方式。
(1)将输出重定向到文件
使用
sink()
将输出重定向到名为 "output.txt" 的文件。然后,通过使用cat()
打印文本 "Hello, world!",它实际上会被写入到文件中。最后,通过调用sink()
,将输出恢复到标准输出(控制台)。
sink("output.txt")
cat("Hello, world!")
sink()
(2)将输出重定向到字符串变量
#capture.output() 函数用于捕获代码块中的输出,并将其保存为字符向量
output <- capture.output({
cat("Hello, world!")
})
print(output)
3.dump,save,dput,write
用于将对象输出到文件或控制台的函数
(1)dump
x <- 10
y <- "Hello, world!"
#文件 "data.R" 将包含相应的 R 代码来定义这些对象
dump(c("x", "y"), file = "data.R")
(2)save
x <- 10
y <- "Hello, world!"
#将一个或多个对象保存到二进制文件中
save(x, y, file = "data.RData")
(3)dput
x <- list(a = 1, b = 2)
#用于生成一个对象的可重现表达式,并将其输出到控制台或文件。
dput(x)
(4)write
x <- c(1, 2, 3, 4, 5)
#用于将对象以文本形式写入文件
write(x, file = "data.txt")
4.scan,read.table,readlines, load,dget
用于读取数据或加载对象的函数
(1)scan
#用于逐行扫描输入文件或控制台,并将数据读入为向量或矩阵。
data <- scan("data.txt")
(2)read.table
#用于从文件中读取表格形式的数据,并创建一个数据框(data frame)
df <- read.table("data.txt", header = TRUE)
(3)redlines
#用于从文件中读取表格形式的数据,并创建一个数据框(data frame)
lines <- readlines("data.txt")
(4)load
#用于加载以二进制格式保存的 R 工作空间(Workspace)或对象。
load("data.RData")
(5)dget
#用于将以字符串形式表示的 R 表达式读取为相应的对象
expr <- dget("expression.txt")
三.工作环境相关
1.ls,objects
来显示当前环境中定义的对象列表
x <- 10
y <- "Hello, world!"
# 使用 ls() 函数显示对象列表
print(ls())
# 或者使用 objects() 函数显示对象列表
print(objects())
2.rm(remove)
可以删除一个或多个对象
x <- 10
y <- 20
rm(x) # 或 remove("x")
#x 对象将从内存中移除,不再可访问
#rm(x, y)(或 remove("x", "y"))将一次性删除 x 和 y 两个对象
#如果要删除当前环境中的所有对象
可以使用 rm(list = ls())(或 remove(list = ls()))来清空环境。
3.q(quit)
两个函数都用于终止 R 会话并退出。
# 使用 q() 函数退出系统
q()
# 或者使用 quit() 函数退出系统
quit()
4.First,Last
(1)First
# .Rprofile 文件
#.First 函数是一个可选的全局环境中的函数,在 R 启动时被自动调用
.First <- function() {
cat("Welcome to R!")
}
(2)Last
# .Rprofile 文件
#也是一个可选的全局环境中的函数,在 R 即将退出时被自动调用
.Last <- function() {
cat("Goodbye! Thanks for using R.")
}
5.options
(1)获取当前的系统选项
current_options <- options()
print(current_options)
(2)设置系统选项
# 设置浮点数的显示精度
options(digits = 3)
# 设置警告消息的处理方式
options(warn = 2)
6.?,help,help.start,apropos
(1)?
?
或help()
函数用于获取特定函数或主题的帮助文档
# 获取特定函数的帮助文档
?mean
help(mean)
# 获取特定主题的帮助文档
?graphics
help("plotting")
(2)help.start
用于启动一个基于 HTML 的本地帮助文档
help.start()
(3)apropos
用于搜索对象名和函数名称,返回与给定字符串相关的所有对象和函数
apropos("plot")
7.data
使用
data()
函数来列出附带R安装的数据集
#使用 data() 函数来列出附带R安装的数据集
# 列出所有附带的数据集
data()
# 查看特定数据集的帮助文档
?iris
8.head
使用
head()
函数来查看数据的前几行
# 查看 iris 数据集的前 6 行
head(iris)
# 查看 mtcars 数据集的前 10 行
head(mtcars, 10)
9.tail
使用
tail()
函数来查看数据的最后几行
# 查看 iris 数据集的最后 6 行
tail(iris)
# 查看 mtcars 数据集的最后 10 行
tail(mtcars, 10)
整理不易,若有遗漏会继续补充,若有错误,请大佬们不吝赐教!!💖💖💖