R语言其他相关函数(各函数解析含实例,可供查询)

简介: R语言其他相关函数(各函数解析含实例,可供查询)

一.函数相关

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)


目录
相关文章
|
4天前
|
弹性计算 缓存 应用服务中间件
阿里云服务器2核2G99元和2核4G199元实例规格性能及适用场景解析
2024年阿里云推出了两款云服务器,2核2G3M带宽40G ESSD Entry盘价格只要99元1年,2核4G5M带宽80G ESSD Entry盘价格只要199元1年,这两款云服务器的活动截止日期为2026年3月31日,活动期间新购、续费同价。那么这两款云服务器怎么样呢?可以用来做什么?本文将对这两款云服务器进行深度解析,包括配置介绍、实例规格、使用场景以及购买建议,以供选择参考。
阿里云服务器2核2G99元和2核4G199元实例规格性能及适用场景解析
|
1天前
|
SQL 自然语言处理 前端开发
【JavaScript】ECMAS6(ES6)新特性概览(一):变量声明let与const、箭头函数、模板字面量全面解析
【JavaScript】ECMAS6(ES6)新特性概览(一):变量声明let与const、箭头函数、模板字面量全面解析
7 2
|
1天前
|
机器学习/深度学习 人工智能 算法
【机器学习】深度探索:从基础概念到深度学习关键技术的全面解析——梯度下降、激活函数、正则化与批量归一化
【机器学习】深度探索:从基础概念到深度学习关键技术的全面解析——梯度下降、激活函数、正则化与批量归一化
12 3
|
2天前
|
SQL 自然语言处理 JavaScript
【JavaScript】ECMAS6(ES6)新特性概览(一):变量声明let与const、箭头函数、模板字面量全面解析
ES6,作为ECMAScript 2015的简称,标志着JavaScript编程语言的一个重要进化节点。它不是渐进的变化,而是一次飞跃式的更新,为开发者带来了一系列强大的新特性与语法糖,极大提升了代码的简洁性、可读性和运行效率。从新的变量声明方式let与const,到优雅的箭头函数、模板字符串,再到让对象操作更为灵活的解构赋值与增强的对象字面量,ES6的每项改进都旨在让JavaScript适应日益复杂的应用场景,同时保持其作为脚本语言的活力与魅力。本文是深入探索这些核心特性的起点,为你铺开一条通向高效、现代JavaScript编程实践
19 0
|
7天前
|
存储 机器学习/深度学习 编解码
深度解析阿里云服务器计算型c7与计算型c8y实例区别与选择参考
在阿里云提供的众多计算型云服务器实例规格中,计算型c7和计算型c8y实例是两款备受关注的云服务器规格。主要适用于网站应用、批量计算、视频编码等各种类型和规模的企业级应用,对于初次接触阿里云服务器的新手用户来说,可能并不是很清楚他们之间的区别,因此可能不知道怎么选择。本文将从实例的架构、处理器、存储与网络能力、使用场景、指标数据、收费标准以及实时活动价格等多个维度,对计算型c7和计算型c8y实例进行深度解析,以供参考和选择。
深度解析阿里云服务器计算型c7与计算型c8y实例区别与选择参考
|
12天前
|
网络协议 Linux 开发者
探索Linux下的`dig`命令:DNS查询的利器
`dig`是Linux下强大的DNS查询工具,适用于系统管理员、网络工程师和开发者。它支持查询A、MX、NS、CNAME等记录类型,以及反向DNS。高级功能包括跟踪查询过程、显示额外信息、指定查询服务器和批量查询。学习`dig`能助你更好地理解DNS工作原理和优化网络问题。
|
18天前
|
存储 Java
JAVA中的变量:深入解析与实例
JAVA中的变量:深入解析与实例
32 3
|
18天前
|
Python
Python函数的返回值深入解析
Python函数的返回值深入解析
10 1
|
18天前
|
存储 算法 C++
C++中的函数深入解析
C++中的函数深入解析
18 2
|
20天前
|
存储 C语言 索引
C语言字符数组深入解析与应用实例
C语言字符数组深入解析与应用实例
17 0

热门文章

最新文章

推荐镜像

更多