R

R语言学习笔记(一)

"R语言学习笔记"

Posted by jhljx on November 4, 2017

目录

Latex添加颜色

R语言 查看路径getwd(),设置路径setwd()

运行R语言程序 source

R语言 rep函数相当于python中的range函数 http://www.cnblogs.com/business-analysis/p/3414997.html

R语言 seq函数 从1开始 http://blog.csdn.net/jiluben/article/details/40024607

R语言基本函数 http://blog.csdn.net/am290333566/article/details/50418369

R语言线性规划 http://blog.sina.com.cn/s/blog_83bb57b70101isa3.html

R语言rnorm函数产生服从正态分布的随机数 x<-rnorm(100) #产生100个服从正态分布的随机数 x<-rnorm(100,3,4) #产生100个均值是3,标准差为4的随机数

作者:黄小山 链接:https://www.zhihu.com/question/30019410/answer/126704958 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

x$y 等价于 x[[“y”, exact = FALSE]],用于获取dataframe或者list里面的某个变量,比如mtcars$cyl 和 diamonds$carat。不同之处在于 $ 可以部分匹配变量名,比如:x <- list(abc = 1) x$a #> [1] 1 x[[“a”]] #> NULL @ 是R中,S4类的一个操作符,用于提取S4对象中的内容(slot),比如:setClass(“Person”, slots = list(name = “character”, age = “numeric”))

alice <- new(“Person”, name = “Alice”, age = 40)

alice@age #> [1] 40 这个时候$是不起作用的,因为被S4类重写了。你可以自己定义$的行为。###顺便对比一下“[[” 和 $ 的效率:x <- list(axy = 1:100, b = rep(letters, each = 4))

microbenchmark( x[[“axy”]], x$axy, x$a, times = 10000L, control = list(warmup = 1000L) )

#> Unit: nanoseconds expr min lq mean median uq max neval x[[“axy”]] 0 0 16.2116 0 1 27584 10000 x$axy 0 0 28.7540 0 1 14113 10000 x$a 0 0 40.2570 0 1 25018 10000 三种写法用时相差不大。不过需要极限优化的时候可以考虑用“[[”而不是 $。

R语言绘制概率密度图

plot(density(mat))

http://www.jianshu.com/p/999475adcb32

is.vector(A):判断A是否为向量; as.vector(A):如A是矩阵(数组),as.vector就是将矩阵转化为向量;

与线性代数中的向量不是一回事。 在R中,vector就是同类型的数据集合。这些数据一般是是数值型,也可以是字符型,或是逻辑型。一般是这三种类型。还有一种是复数型,不过用不上,基本上上可以无视。 vector是没有维度的,用dim()函数赋维后,就成了arrary。如果是二维,就是矩阵。

就是这个意思,不用想其他的了。了解以上这个,就可以掌握vector。

R语言中分割以点为分隔符的字符串

不是自己想要的结果: unlist(strsplit(“a.b.c”, “.”))

[1] “” “” “” “” “”

Note that ‘split’ is a regexp! 要注意split指定的分隔符是正则表达式

If you really want to split on ‘.’, use

如果想实现点为分隔符号,有如下两种办法 unlist(strsplit(“a.b.c”, “[.]”))

[1] “a” “b” “c”

or

unlist(strsplit(“a.b.c”, “.”, fixed = TRUE))

R语言list追加元素 list是这样的: aa <- list() bb <- c(2,3) cc <- c(aa, list(bb))

http://bbs.csdn.net/topics/391953669

R语言中数组array,矩阵matrix,数组框dataframe之间的区别

http://f.dataguru.cn/thread-4433-1-1.html

R语言 if else语句 http://www.yiibai.com/r/r_if_else_statement.html

R语言read.table返回值的类型是什么

R语言 dataA = read.table(“data.txt”) head(dataA)

如何用R表示全1向量 vec = rep(1,N)

R语言 for循环

for( i in 1:length(vec))

for(item in vec)

R语言 hash library(hash) http://blog.csdn.net/bone_ace/article/details/47821589

R语言进行文件夹及文件内文件操作示例 http://blog.csdn.net/faith_mo_blog/article/details/51690040

R语言 Warning message: In read.table(“1.txt”, header = F) : incomplete final line found by readTableHeader on ‘1.txt’

上面是我的错误提示,咋回事呢,答案非常简单! 打开1.txt文件,到文件最后一行,按Enter,让光标进入下一行,保存即可。 Goto to the end of the last line of the file in your editor and press Return and svae.

R语言 read.table [2458] 603003.SH 603008.SH 603077.SH 603123.SH 603128.SH 603167.SH 603333.SH [2465] 603366.SH 603399.SH 603766.SH 603993.SH 2468 Levels: 000002.SZ 000004.SZ 000005.SZ 000006.SZ 000007.SZ … 603993.SH

这是我读入的数据显示出的结果,我输入的明明是一个序列,他显示出来总会有下面那个2468 Levels: ,这样就没办法进行数据处理了,求大神解答!!

在read.table的变量列表中加上这一条:stringsAsFactors = FALSE后试试。 您可以自己读读read.table的帮助文件。 不设置这个变量的值时,系统默认将所有的character变量转换为factor变量,所以会出现levels. 通过如此设置禁止系统这样做。

而且如果不设置stringsAsFactors为FALSE,则read.table在读取字符串数据的时候类型可能会变成numeric,而不是character类型

R语言 [[]]的意思?

R语言 dataframe 95570 * 6 print(length(cancer_dataframe)) 6 print(dim(cancer_dataframe)) 95570 6 print(nrow(cancer_dataframe)) 95570 print(ncol(cancer_dataframe)) 6

R语言dataframe注意事项 默认情况下,字符串向量都会被自动识别成Factor,也就是说,ID是数字类型,其他的3个列都被定义为Factor类型了。显然这里Name应该是字符串类型,Birthdate应该是Date类型,我们需要对列的数据类型进行更改: student$Name<-as.character(student$Name) student$Birthdate<-as.Date(student$Birthdate)

https://www.cnblogs.com/studyzy/p/4316118.html

R语言 methy_data_path = sprintf(“%s/%s”, methy_data_dir, file_name)

R语言 Warning messages: 1: In grepl(“\n”, lines, fixed = TRUE) : input string 1 is invalid in this locale 2: In grepl(“\n”, lines, fixed = TRUE) : input string 1 is invalid in this locale

I understand the reason.

I found some source and other IO functions which read the source code from file. On my courses, these scripts are stored with encoding UTF-8, but the default chinese encoding for Chinese Traditional windows users are BIG5. Similar issues might be occurred for other non-English courses.

The solution is to add the argument encoding = “UTF-8”, in my case, to these functions or connections. More generally, providing the default encoding or a hook before parsing might be a more robust solution.

Best,

原因是自己的R script中有中文注释

R语言read.table返回的值为一个list,通过[[1]]取出里面的numeric的vector数组 normal_methy = read.table(normal_file_path)[[1]] i_th_methy = read.table(i_th_file_path)[[1]]

R语言fit beta distribution https://stats.stackexchange.com/questions/172710/fitting-data-lognormal-and-beta-distribution-interpretations

R Studio如何清空控制台? CTRL+L 或者右键也可以看到清空Console

R语言强制转换 as.numeric之类的函数

R语言取模%%

R语言判断读入的数据是否有NA sum(is.na(normal_methy))计算数据中na的个数是否大于0

R语言next相当于C语言continue

R语言如何处理缺失值数据??这个会导致read.table报错。(暂时没想到解决方案,但是这个问题在数据处理过程中很重要)

plot(density(a))

plot(hist(a)) par(new=TRUE) #类似于Matlab的hold on,可以让多个图像显示在一个图里 plot(density(a))

R语言如何在一张图上画多个图 1、用par(new=TRUE)命令,就像matlab里的hold on 2、par(mfrow=c(2,3)) 一个图版显示2行,3列,之后按照常规作图就可以了。 3、如果在原有的图形上添加新的内容,如果用plot(),则可以选 plot(x, add=TRUE) 4、低水平的绘图函数可以直接在图形上添加元素,如 points(), lines(),等等

R语言data.frame修改列名 names(cancer_dataframe_new)[6:ncol(cancer_dataframe)] = seq(1, i_th_sample_num)

1、在R语言中,如何找到满足条件的数呢?

例如给定一个向量c2,要求找到数值大于0的数:

c2 [1] 0.00 0.00 0.00 0.00 0.00 0.00 0.06 0.09 0.20 0.09 0.08 0.14 0.14 0.23 [15] 0.08 0.06 0.12 0.20 0.14 0.11 0.20 0.14 0.17 0.15 0.18 0.15 0.20 0.12 [29] 0.23 0.08 0.12 0.08 0.23 0.12 0.08 0.17 0.18 0.17 0.12 0.17 0.14 0.18 [43] 0.11 0.27 0.06 c2[c2>0] [1] 0.06 0.09 0.20 0.09 0.08 0.14 0.14 0.23 0.08 0.06 0.12 0.20 0.14 0.11 [15] 0.20 0.14 0.17 0.15 0.18 0.15 0.20 0.12 0.23 0.08 0.12 0.08 0.23 0.12 [29] 0.08 0.17 0.18 0.17 0.12 0.17 0.14 0.18 0.11 0.27 0.06

2、找到了满足条件的数,但如何获取这些数在原向量中的位置(或索引呢)?

答案是使用which()函数。首先找到满足大于0的数列:

c2>0 [1] FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE [13] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE [25] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE [37] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE 其次,根据该数列标识,就能找到对应的索引了。 which(c2>0) [1] 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 [25] 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 3、查找判断

(1)判断至少一个数满足条件 例如判断向量中至少有一个小于或等于零的数

any(c2<=0) [1] TRUE (2)判断所有的数都满足条件 例如判断所有的数都大于0,判断所有的数都大于等于0: all(c2>0) [1] FALSE all(c2>=0) [1] TRUE

R语言字符串分割的函数

strsplit(‘123abcdefgabcdef’,’ab’)

[[1]] [1] “123” “cdefg” “cdef”

字符串连接: paste() #paste(…, sep=””, collapse=NULL)

字符串分割: strsplit() #strsplit(x, split, extended=TRUE, fixed=FALSE, perl=FALSE)

计算字符串的字符数 nchar()

字符串截取 substr(x, start, stop) substring(text, first, last=1000000) substr(x, start, stop) <- value substring(text, first, last=1000000) <- value

substr(“abcdef”, 2, 4) substring(“abcdef”, 1:6, 1:6) ##strsplit is more efficient… substr(rep(“abcdef”, 4), 1:4, 4:5) x <- c(“asfef”, “qwerty”, “yuiop[”, “b”, “stuff.blah.yech”) substr(x, 2, 5) substring(x, 2, 4:6) substring(x, 2) <- c(“..”, “+++”)

字符串替换及大小写转换: chartr(old, new, x) tolower(x) toupper(x) casefold(x, upper=FALSE)

字符完全匹配 grep() 字符不完全匹配 agrep() 字符替换 gsub() 以上这些函数均可以通过perl=TRUE来使用正则表达式。 grep(pattern, x, ignore.case=FALSE, extended=TRUE, perl=FALSE, value=FALSE, fixed=FALSE, useBytes=FALSE)

sub(pattern, replacement, x, ignore.case = FALSE, extended = TRUE, perl = FALSE, fixed = FALSE, useBytes = FALSE)

gsub(pattern, replacement, x, ignore.case = FALSE, extended = TRUE, perl = FALSE, fixed = FALSE, useBytes = FALSE)

regexpr(pattern, text, ignore.case = FALSE, extended = TRUE, perl = FALSE, fixed = FALSE, useBytes = FALSE)

gregexpr(pattern, text, ignore.case = FALSE, extended = TRUE, perl = FALSE, fixed = FALSE, useBytes = FALSE)

jupyter安装R kernel

options(repos=’http://cran.rstudio.com/’) install.packages(“devtools”) install.packages(c(‘repr’, ‘pbdZMQ’, ‘devtools’)) options(download.file.method = “wget”) install.packages(‘RCurl’) devtools::install_github(c(‘IRkernel/IRdisplay’, ‘IRkernel/IRkernel’)) IRkernel::installspec()