R语言学习笔记(一)

2019-10-01  本文已影响0人  生信摆渡

1. getwd()

getwd("路径")

2. setwd()

setwd("路径")
> getwd()
> [1] "C:/Users/Jay Chou/Documents"
> setwd("G:/Script/R")
> getwd()
> [1] "G:/Script/R"

3. source()

source("/路径/myscript.R")

4. 向量

a <- c(1, 2,3)
b <- c("one","two","three")
C <- c(TRUE, TRUE, FALSE)

​ 这里,a 是数值型向量, b 是字符型向量,而 c 是逻辑型向量。

> 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(path = ".", pattern = NULL, all.files = FALSE,
           full.names = FALSE, recursive = FALSE,
           ignore.case = FALSE, include.dirs = FALSE, no.. = FALSE)

6. 正则表达式

7. strsplit()

strsplit(x, split, fixed = FALSE, perl = FALSE, useBytes = FALSE)
#将"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)

9. unique()

10. function()

function(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)
> a = paste("hellow","world","!")
> b = paste0("hellow","world","!")
> a
[1] "hellow world !"
> b
[1] "hellowworld!"
#其实我没理解collapse参数的作用

13.system()


system(command, ...)

14. Sys.sleep()

15. names()

#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

install.packages("rjson")

18. library()

library(package, ...)
#在rjson包内定义新的函数writeJSON
library("rjson")
writeJSON <- function(xList, mainTag, fileOut){
  ...
}

19. file()函数

file(file_name, access_mode)

20. cat()函数

cat(… , file = "", sep = " ", fill = FALSE, labels = NULL,append = FALSE)
#打印输入的每个元素,并用空格分隔。为了进行比较,请看一下在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"

参考资料

上一篇 下一篇

猜你喜欢

热点阅读