1. getwd()
-
描述
- 打印当前的工作目录(working directory),是R用来读取文件和保存结果的默认目录;
- 我们可以使用函数
getwd()
来查看当前的工作目录。记得使用引号闭合这些目录名和文件名。
-
语法
getwd("路径")
2. setwd()
-
描述
- 设定当前的工作目录。
-
语法
setwd("路径")
-
举栗
> getwd()
> [1] "C:/Users/Jay Chou/Documents"
> setwd("G:/Script/R")
> getwd()
> [1] "G:/Script/R"
3. source()
-
描述
-
函数
source("filename")
可在当前会话中执行一个脚本。如果文件名中不包含路径,R将假设此脚本在当前工作目录中。 -
语法
source("/路径/myscript.R")
4. 向量
-
描述
- 向量(vector)是用于存储数值型、字符型或逻辑型数据的一维数组。执行组合功能的函数
c()
可用来创建向量。各类向量如下例所示:
- 向量(vector)是用于存储数值型、字符型或逻辑型数据的一维数组。执行组合功能的函数
a <- c(1, 2,3)
b <- c("one","two","three")
C <- c(TRUE, TRUE, FALSE)
这里,a 是数值型向量, b 是字符型向量,而 c 是逻辑型向量。
-
单个向量中的数据必须拥有相同的类型或模式(数值型、字符型或逻辑型)。同一向量中无法混杂不同模式的数据。
-
标量是只含一个元素的向量,例如 f <- 3 、 g <- "US" 和 h <- TRUE 。它们用于保存常量。
-
通过在方括号中给定元素所处位置的数值,我们可以访问向量中的元素。
> a <- c(1:10,2)
> a[c(1,3)]
[1] 1 5
> a[c(1:3)]
[1] 1 3 5
5. list.files()
-
描述
- list.files()`函数遍历目标路径下所有文件,并将这些文件名组成一个字符向量。
-
语法
list.files(path = ".", pattern = NULL, all.files = FALSE,
full.names = FALSE, recursive = FALSE,
ignore.case = FALSE, include.dirs = FALSE, no.. = FALSE)
-
参数
-
path
文件夹路径
-
pattern
匹配文件名,选择自己所需的文件(可选项,默认是全部文件名,包括子文件夹,但是不包括子文件夹的文件),如pattern = "*.XPT",表示要输出以.XPT结尾的文件名,如果没有符号,则输出包含.XPT的文件名
-
all.files
是否返回所有文件,包括隐藏文件,但不包括子文件夹的文件,默认是否
-
full.names
是否返回路径+文件名,默认是否,如果是否,则返回文件名
-
recursive
是否将子文件夹的文件也列出来
-
ignore.case
匹配的文件名是否忽略大小写,默认否,即不忽略大小写
-
6. 正则表达式
-
参见R语言之正则表达式,内容挺多的,以后遇到了再写
-
["字符串"]:表示匹配字符串的所有单个字符
7. strsplit()
-
描述
- 分割字符向量的元素,根据匹配项将字符向量的元素拆分为子字符串,保存为一个list中。
-
语法
strsplit(x, split, fixed = FALSE, perl = FALSE, useBytes = FALSE)
-
参数
-
x
字符向量,将分割每个元素。其他输入(包括一个因数)将产生错误。
-
split
包含用于split的正则表达式(除非
fixed = TRUE
)的字符向量(或可以强制转换为此类的对象)。如果出现空匹配,特别是如果split
长度为0,则将 其x拆分为单个字符。如果split
长度大于1,则会沿循环 -
fixed
逻辑参数。如果完全
TRUE
匹配split
,则使用正则表达式。优先于perl
。 -
perl
逻辑参数。是否应该使用与Perl兼容的正则表达式
-
useBytes
逻辑参数。如果
TRUE
匹配是逐字节进行的,而不是逐字符进行的,则不会转换带有标记编码的输入。如果发现任何标记为的输入"bytes"
(请参见参考Encoding
),则将强制执行此操作(带有警告)。
-
-
举栗
#将"1469530N_1.fq.gz"中的_和.去掉
> a = c("1469530N_1.fq.gz")
> b = strsplit(a, "[._]")
> b
[[1]]
[1] "1469530N" "1" "fq" "gz"
#将"1469530N_1.fq.gz"中的_和_后面的四位字符去掉
#.表示模糊匹配,可以向前模糊匹配(".._"),也可以向后模糊匹配("_..")
> a = c("1469530N_1.fq.gz")
> b = strsplit(a, "_....")
> b
[[1]]
[1] "1469530N" ".gz"
8. sapply()
-
描述
- 用于提取列表中指定的元素
-
语法
sapply(x, FUN, options)
-
参数
-
x
数据框(或矩阵、list?)
-
FUN
-
为一个任意的函数。如果指定了 options ,它们将被传递给 FUN ;也可以为自定义函数。
-
9. unique()
-
描述
- 筛去重复元素
10. function()
-
描述
-
定义函数
-
语法
function(arglist) expr
-
参数
-
arglist
参数列表
-
expr
表达式
-
-
举栗
#确认当前路径
> getwd()
[1] "G:/Script/R"
#列出当前路径下所有文件
[1] "bismarkWGBS.wdl" "Build_Jobs.R" "Build_Jobs_annotation.R" "buildTabix.R"
[5] "Oncotator_FG.R" "workflow.R" "workflow_annotation.R"
#列出当前路径下所有R文件
> a = list.files(getwd(), ".R")
> a
[1] "Build_Jobs.R" "Build_Jobs_annotation.R" "buildTabix.R" "Oncotator_FG.R"
[5] "workflow.R" "workflow_annotation.R"
#以.和_为分隔符分割文件名
> b = strsplit(a, "[._]")
> b
[[1]]
[1] "Build" "Jobs" "R"
[[2]]
[1] "Build" "Jobs" "annotation" "R"
[[3]]
[1] "buildTabix" "R"
[[4]]
[1] "Oncotator" "FG" "R"
[[5]]
[1] "workflow" "R"
[[6]]
[1] "workflow" "annotation" "R"
#提取每行的第一个元素
> c = sapply(b, function(z) z[1])
> c
[1] "bismarkWGBS" "Build" "Build" "buildTabix" "Oncotator" "workflow" "workflow"
#去除重复元素
> unique(c)
[1] "bismarkWGBS" "Build" "buildTabix" "Oncotator" "workflow"
11. setdiff()
setdiff(x, y)
在向量x中取出其与向量y不同的元素
setdiff(x=1:4, y=2:3)
[1] 1 4
12. paste()&paste0()
-
描述
- 两个函数均用于拼接字符,不同之处在于paste()默认以空格为分隔符,paste0()没有分隔符
-
语法
paste(..., seq = " ", collapse = NULL)
paste0(..., collapse = NULL)
-
参数
-
...
指待拼接的字符
-
seq
表示拼接字符的分隔符,默认为空格,
paste()
若指定seq = ""
,则其功能与paste0()
相同 -
collapse
表示如果不指定值,那么函数paste的返回值是自变量之间通过sep指定的分隔符连接后得到的一个字符型向量;如果为其指定了特定的值,那么自变量连接后的字符型向量会再被连接成一个字符串,之间通过collapse的值分隔。
-
-
举栗
> a = paste("hellow","world","!")
> b = paste0("hellow","world","!")
> a
[1] "hellow world !"
> b
[1] "hellowworld!"
#其实我没理解collapse参数的作用
13.system()
-
描述
- 函数
system
()的作用是,调用由参数command
指定的操作系统命令。
- 函数
-
语法
system(command, ...)
14. Sys.sleep()
-
描述
- 系统睡眠
15. names()
-
描述
- 获取或设置对象名称。
-
语法
names(x) names(x) <- value
-
参数
-
x
一个R对象
-
value
一个与
x
相同长度的字符向量或者NULL
-
-
案例
#name()函数主要优点是,它使您可以方便地读取子集。
> islands[c("South America", "Southampton")]
South America Southampton
6795 16
#您可以使用正则表达式提取名称以"A"开头的所有岛
> islands[grepl("^A", names(islands))]
Africa Antarctica Asia Australia Axel Heiberg
11506 5500 16988 2968 16
#您可以覆盖所有名称
> (x <- list(a = 1, b = letters[1:5], c = list(d = 1:3)))
> names(l) <- LETTERS[1:3]
> x
$A
[1] 1
$B
[1] "a" "b" "c" "d" "e"
$C
$C$d
[1] 1 2 3
16. 泛型函数
泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法
时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,> 类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用> 时传入具体的类型。——来自百度
自我理解:泛型函数就是,你定义函数时候,是万能类型。在调用的时候,只要你把具体的> 类型传进去就好。好处呢,就是代码的复用,减少代码量。
在面向对象的语言中都是有泛型的这个概念和实现的。比如说:JAVA、C#、C++、TypeScript等> 等。但是我们在看书或者学习的时候呢,一般只是看到了这样的概念,或者说例子很简单,就是一> 个Int 和 string 参数的泛型使用。
其实泛型是用的很广泛的,特别是在写底层框架的时候。当大家去看源码的时候,会看到很多泛> 型。最近的工作中也用到了泛型,算是写底层吧,因为给别人调用。
17. rjson&rjson包
翻译于json.org
-
Introducing JSON
-
json(javascript对象表示法)是一种轻量级数据交换格式。人类读写起来很容易。机器很容易解析和生成。它基于1999年12月第3版的javascript编程语言标准ecma-262的一个子集。JSON是一种完全独立于语言的文本格式,但是使用了C语言家族的程序员熟悉的约定,包括C、C++、C**、Java、JavaScript、Perl、Python和许多其他。这些属性使json成为理想的数据交换语言。
-
json基于两种结构:
- 名称/值对的集合。在各种语言中,这可以实现为对象、记录、结构、字典、哈希表、键列表或关联数组。
- 值的有序列表。在大多数语言中,这是以数组、向量、列表或序列的形式实现的。
这些是通用的数据结构。几乎所有现代编程语言都以某种形式支持它们。与编程语言可互换的数据格式也基于这些结构是有意义的。
-
在json中,它们采用以下形式:
对象是一组无序的名称/值对。对象以{左大括号开始,以}右大括号结束。每个名称后跟:冒号,名称/值对用逗号分隔。 -
JSON文件数据存储在人类可读格式的文本。 JSON代表JavaScript对象符号。 R能够使用rjson包读取JSON文件。
-
-
安装rjson软件包
install.packages("rjson")
18. library()
-
描述
- 加载/附加和列出软件包
- 加载后,可在包内定义新的函数
-
用法
library(package, ...)
-
参数
-
package
包的名称,以名称或文字字符串或字符串的形式给出
-
...
其他参数
-
-
案例
#在rjson包内定义新的函数writeJSON
library("rjson")
writeJSON <- function(xList, mainTag, fileOut){
...
}
19. file()函数
-
描述
- 创建文件
-
用法
file(file_name, access_mode)
-
参数
-
file_name
文件名
-
access_mode
文件访问模式
-
20. cat()函数
-
描述
- 连接并打印
- 输出对象,并连接表示形式。
cat
执行的转换比少得多print
。 -
cat
对于在用户定义的函数中产生输出很有用。它将参数转换为字符向量,将其连接为单个字符向量,将给定的sep =
字符串附加到每个元素,然后输出它们。 - 除非得到明确的要求,否则不输出换行符 “\ n” 或通过填充生成(如果参数
fill
为TRUE
或数字)。
-
语法
cat(… , file = "", sep = " ", fill = FALSE, labels = NULL,append = FALSE)
-
参数
-
...
R对象
-
file
一个connection,或者一个命名文件的字符串。如果
""
(默认)cat
打印到标准输出连接,则控制台输出,除非通过重定向sink
。如果为"|cmd"
,则cmd
通过打开管道连接将输出通过管道传递给给出的命令。 -
sep
在每个元素后附加的字符串的字符向量,默认空格。
-
fill
逻辑值或正数字,用于控制如何将输出分成连续的行。如果是
FALSE
(默认值),则仅由显式创建的换行符“\ n”被打印。否则,该输出被分成与打印宽度等于该线路的选项width
,如果fill
是TRUE
,或的值fill
,如果这是数字。非正值fill
将被警告,并被忽略。 -
lables
行的标签的字符向量。如果被忽略
fill
的FALSE
。 -
append
仅当参数
file
是文件名(而不是连接或"|cmd"
)时使用。如果TRUE
输出将附加在file
; 否则,它将覆盖的内容file
。
-
-
案例
#打印输入的每个元素,并用空格分隔。为了进行比较,请看一下在paste()相同输入下的行为。
> cat(LETTERS)
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
> paste(LETTERS)
[1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S"
[20] "T" "U" "V" "W" "X" "Y" "Z"
参考资料
- R语言实战
- R帮助文档
- rdocumentation
网友评论