R語言中知識點總結(二)


一些函數不知道什么意思要查,看數值例子,做筆記,知道函數的功能,函數和返回值。

網頁上查找關鍵詞,巧用查找(ctrl+F)


數據讀取處理,有read.table   read

R—讀取數據(導入csv,txt,excel文件)

read.table函數:read.table函數以數據框的格式讀入數據,所以適合讀取混合模式的數據,但是要求每列的數據數據類型相同。

read.table讀取數據非常方便,通常只需要文件路徑、URL或連接對象就可以了,也接受非常豐富的參數設置:

  • file參數:這是必須的,可以是相對路徑或者絕對路徑(注意:Windows下路徑要用斜杠'/'或者雙反斜杠'\\')。
  • header參數:默認為FALSE即數據框的列名為V1,V2...,設置為TRUE時第一行作為列名。

data1<-read.table('item.csv')#默認header=FALSE

data2<-read.table('item.csv',header=TRUE)

 

  • read.csv、read.csv2、read.delim是read.table函數的包裝,分隔符分別對應逗號,分號,制表符,同樣接受read.table所有參數。
  • read.csv函數header參數默認為TRUE,不同於read.table。

data3<-read.csv('item.csv',sep=',',header=TRUE)

data4<-read.table('item.csv')

#下文示例采用read.csv函數,兩種寫法效果相同

 

gc.data=read.table("count_new.txt",header=TRUE,sep="\t")#
# head(gc.data)

 

count數據

image_thumb_thumb

原數據csv轉成txt后再做

 

library("DESeq2")

 

coldata<-data.frame(c(rep("normal",30),rep("tumor",377)))     
"condition"->names(coldata) 

names(coldata)

rownames(coldata) = colnames(exprSet) 

rownames() 行名                                colnames()  列名

gctestnew=gc.data[seq(1,10),seq(1,4)]

exprSet = as.matrix(gc.data[,-1])

 

矩陣提取相應的行,現在還在越界,已解決:

id=up_diff_result$Row.names

name=gc.data[id,1] 


代碼的形式更改鏡像下載包
source("http://bioconductor.org/biocLite.R")
options(BioC_mirror="http://mirrors.ustc.edu.cn/bioc/") biocLite('WGCNA') 

轉置 as.data.frame
datExpr0 = as.data.frame(t(femData[, -c(1:8)])); #去除數據 18 列 轉置后生成數據框。

names(datExpr0) = femData$substanceBXH;
 


R語言的一些基礎補充

 

sampleTree = hclust(dist(datExpr0), method = "average");

sampleTree = hclust(dist(datExpr0), method = "average");

https://blog.csdn.net/sherrymi/article/details/38341185

 

dim(femData); #查看數組(矩陣)的大小

 

plot(sampleTree,….)

https://www.cnblogs.com/wutongyuhou/p/5873056.html

sizeGrWindow(width, height)

width   desired width of the window, in inches.

height   desired heigh of the window, in inches.

 

datExpr0[seq(1,10),seq(1,4)]  #顯示1-10行,1-4列

datExpr0 = as.data.frame(t(femData[, -c(1:8)])); #去除數據 1 到 8 列 轉置后生成數據框。

 

nGenes = ncol(datExpr) #  3600L?  多少列
#郭:例子:matrix(1:20,nrow=4,ncol=5,byrow=FALSE) 分析: 矩陣A的數據是1-20,在R語言中1-20就是1:20,4*5的意思就是4行5列。

nSamples = nrow(datExpr) # 多少列

image_thumb8 

F2_2   行   樣本134,  MMT0000044   列  是基因3600          134*3600      排序了

 


R語言 sub與gsub函數的區別

> text <- c("we are the world", "we are the children")

> sub("w", "W", text)

[1] "We are the world"    "We are the children"

> sub("W","w",text)

[1] "we are the world"    "we are the children"

> gsub("W","w",text)

[1] "we are the world"    "we are the children"

> gsub("w","W",text)

[1] "We are the World"    "We are the children"

 

> sub(" ", "", "abc def ghi")

[1] "abcdef ghi"

> ## [1] "abcdef ghi"

> gsub(" ", "", "abc def ghi")

[1] "abcdefghi"

> ## [1] "abcdefghi"

從上面的輸出結果可以看出,sub()和gsub()的區別在於,前者只替換第一次匹配的字符串,而后者會替換掉所有匹配的字符串。


R子集subset

> x<-c(6,1,2,3,NA,12)

> x[x>5]    #x[5]是未知的,因此其值是否大於5也是未知的

[1]  6 NA 12

> subset(x,x>5)  #subset直接會把NA移除

[1]  6 12

> subset(airquality, Temp > 80, select = c(Ozone, Temp))

    Ozone Temp

29     45   81

35     NA   84

36     NA   85

38     29   82

39     NA   87

40     71   90

...

> subset(airquality, Day == 1, select = -Temp)

    Ozone Solar.R Wind Month Day

1      41     190  7.4     5   1

32     NA     286  8.6     6   1

62    135     269  4.1     7   1

93     39      83  6.9     8   1

124    96     167  6.9     9   1

...

> subset(airquality, select = Ozone:Wind)

    Ozone Solar.R Wind

1      41     190  7.4

2      36     118  8.0

3      12     149 12.6

4      18     313 11.5

5      NA      NA 14.3


就是把x中所有不是NA的值賦予x,比如說x=c(1,2,NA,4),那么運行這個程序
x<-x[!is.na(x)]
以后,x=c(1,2,4)

 


x<-“123”,x為character類型,而as.numeric(x)則為numeric類型的123。但是因子(factor)類型卻不一樣。

      a<-factor(c(100,200,300,301,302,400,10)),它們的值分別為100 200 300 301 302 400 10,然而

as.numeric(a)對應的值並非100 200 300 301 302 400 10,而是2 3 4 5 6 7 1。因子(factor)轉換成數值型(numeric)

的規則是這樣的:

     一共有n個數,那么轉換后的數字就會在1——n中取值,數字最小的取一,次小的取二,以此類推。

     那么如何讓因子(factor)類型里的數值轉換對應的數值型呢?

     mean(as.numeric(as.character(factorname)))
     mean(as.numeric(levels(factorname)[factorname]))
---------------------
作者:記錄本
來源:CSDN
原文:https://blog.csdn.net/jiluben/article/details/40222229
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!



> c(1:5) [1] 1 2 3 4 5
> list(a=1,b=2,c=3)
$`a`
[1] 1

$b
[1] 2

$c
[1] 3
> 5^5
[1] 3125
 

 

R語言常用命令

https://www.cnblogs.com/mohuishou-love/p/10232347.html


  • mapply

mapply(FUN, ..., MoreArgs=NULL, SIMPLIFY=TRUE, USE.NAMES=TRUE)
mapply是多變量版的sapply,參數(...)部分可以接收多個數據,mapply將FUN應用於這些數據的第一個元素組成的數組,然后是第二個元素組成的數組,以此類推。要求多個數據的長度相同,或者是整數倍關系。返回值是vector或matrix,取決於FUN返回值是一個還是多個。

> mapply(sum, list(a=1,b=2,c=3), list(a=10,b=20,d=30))
 a  b  c 
11 22 33 
> mapply(function(x,y) x^y, c(1:5), c(1:5))
[1]    1    4   27  256 3125
> mapply(function(x,y) c(x+y, x^y), c(1:5), c(1:5))
     [,1] [,2] [,3] [,4] [,5]
[1,]    2    4    6    8   10
[2,]    1    4   27  256 3125

作者:Stone_Stan4d
鏈接:https://www.jianshu.com/p/5529887f4447
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。


函數(和上面的沒關系):

days <- function(x, y){
  if(is.na(x))return(y)
  else return(x)
}


 

year <- c(2010,2012,2013,12)     c 表示列
sales <-c(1203,1220,2230,45)
salesData <- data.frame(year,sales)

image

4行2列

用str(salesData)觀察數據框結構時,year的類型是num.
year在這里的語義是:每年的銷售額,顯然year是個類別,因此轉化為因子:

image

R里面的數字向量都默認為數值型的,類別型和順序型向量都叫因子,但是得自己設定。日期數據其實也是數值型的,但是也得設定,設定成日期型后可以進行運算。

如何把factor因子取消 as.character

 

關於R語言中的”因子”變量類型(一)

https://blog.csdn.net/zhangxiaojiakele/article/details/80117602

 

因子變量實際上是由數值型變量構成的!

這一標題有沒有令你感到驚訝呢!下面給你展示一個比較sao的操作,你先自行體會以下(運氣好的人可能體會過,因為我看見有人在QQ群問過這種問題):

x <- c("10", "20", "30", "40")
as.numeric(x)

## [1] 10 20 30 40

y <- as.factor(x)
y

## [1] 10 20 30 40
## Levels: 10 20 30 40

as.numeric(y)

## [1] 1 2 3 4

看到了嗎?我們對於x這一數值構成的字符型向量進行數值轉化操作,得到了我們想要的結果.然而,當將x轉化為因子型變量時,景觀看起來外觀沒有什么大的差別,但我們進行數值轉化操作的結果卻並非我們想要的,而是一堆奇怪的1,2,3,4.事實上1,2,3,4恰恰表示的對應元素在因子型變量中的排序先后,即 levels屬性的先后.對照levels屬性或許讓你能夠更至關的進行觀察:

order(levels(y))

## [1] 1 2 3 4

as.numeric(y)

## [1] 1 2 3 4

 

這也是為什么很多人看着眼前的數據似乎是一組字符型變量,想將其轉化為數值型變量,但卻發現為得到想要的結果,究其原因就在於這些變量並不是字符型變量,而是因子型變量.這一情況最容易出現在以下情形中:你的數據中某一列原本應當是數值型變量,但某幾個取值缺失了,而缺失值的表示並不是簡單的空值,而是其他如”-“等符號,此時在數據讀取的過程中,這一列變量將會被自動轉化為字符型向量,而如果你恰恰又不幸地忘記設置stringAsFactors = FALSE, 那么,便會產生如上情形了.任何情況下,都要仔細檢查變量類型.上述問題的解決方法是先使用as.characer()將因子型變量轉化為字符型變量,繼而使用as.numeric()函數將其轉化為數值型變量.

---------------------
作者:zhangxiaojiakele
來源:CSDN
原文:https://blog.csdn.net/zhangxiaojiakele/article/details/80117602
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

 

help('lapply')
 

R語言中ifelse函數可以完成類似的if...else的分支功能,可以認為是緊湊的if...else結構。其基本語法格式如下:

if(con, statement1, statement2)

con是邏輯條件,當邏輯條件的值為TRUE時,則輸出statement1的值,否則輸出statement2的值。

第一個例子:

x<-3

y<-ifelse(x>0, 2*x+1, 2*x-1)

其執行的過程是,若x是個大於0的值,則輸出2*x+1的值,否則為2*x - 1的值。

 


問題悲傷待解決)

source('http://bioconductor.org/biocLite.R')
Error in file(filename, "r", encoding = encoding) : 
  cannot open the connection
In addition: Warning message:
In file(filename, "r", encoding = encoding) : InternetOpenUrl failed: ''

source("https://bioconductor.org/biocLite.R") InternetOpenUrl failed: '無法與服務器建立連接'

 

(1)看看IE能不能打開網址  http://www.bioconductor.org/

(2) https://blog.csdn.net/truffle528/article/details/77200710   不行
options(repos=structure(c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))) 
source("https://bioconductor.org/biocLite.R")

 


R連接函數paste和paste0

paste0函數,默認是sep=""(兩個函數的唯一區別)

#要生成12個月的fitbit文件名
paste("fitbit", 1:12, ".jpg", sep = "")
[1] "fitbit1.jpg"  "fitbit2.jpg"  "fitbit3.jpg"  "fitbit4.jpg"  "fitbit5.jpg"  "fitbit6.jpg"  "fitbit7.jpg"
[8] "fitbit8.jpg"  "fitbit9.jpg"  "fitbit10.jpg" "fitbit11.jpg" "fitbit12.jpg"
#可以看出參數里面有向量時的捉對拼接的效果,如果某個向量較短,就自動補齊
a <- c("","","","","","","","","","")
b <- c("","","","","","","","","","","","")
paste0(a, b)
[1] "甲子" "乙丑" "丙寅" "丁卯" "戊辰" "己巳" "庚午" "辛未" "壬申" "癸酉" "甲戌" "乙亥"
 
paste與paste0還有一個collapse參數,可以把這些字符串拼成一個長字符串,而不是放在一個向量中
 
#collapse是合並成一個字符串時的分隔符
paste("fitbit", 1:3, ".jpg", sep = "", collapse = "; ")
[1] "fitbit1.jpg; fitbit2.jpg; fitbit3.jpg"

 


 

R——文件與工作空間的設置

  • getwd()   獲取當前工作空間
  • ls()   列出當前工作空間所有的對象
  • dir()   列出與當前工作空間平行的文件
  • args(list.files)   獲取list.files()函數的參數
  • old.dir<-getwd()   將當前工作空間保存在old.dir變量
  • dir.create('testdir')   創建一個新的工作空間
  • setwd('testdir')   將上面創建的工作空間設置為當前工作空間
  • file.create('mytest.R')   在當前工作空間創建一個文件
  • list.files()   列出所有文件
  • file.exists('mytest.R')   建議該文件是否存在
  • file.rename('mytest.R','mytest2.R')   重命名
  • file.copy('mytest2.R','mytest3.R')   復制
  • file.path('mytest3.R')   獲取路徑
  • dir.create(file.path('testdir2','testdir3'),recursive=TRUE)   以不覆蓋方式創建工作空間
  • unlink('testdir2',recursive=TRUE)   刪除工作空間
  • setwd(old.dir)   還原工作空間
  • unlink('testdir',recursive=TRUE)   繼續刪除工作空間

 


R中的路徑設置

1.使用getwd()函數來顯示當前工作目錄。

> getwd()
[1] "C:/Users/Administrator/Documents"

2.使用setwd()函數更改當前目錄。

> dir.create("E:/R_Files")
> setwd("E:/R_Files")
> getwd()
[1] "E:/R_Files"

    注意:
    (1) 函數setwd()不會自動創建一個不存在的目錄。如果必要的話,可以使用函數dir.create()來創建新目錄,然后使用setwd()將工作目錄指向這個新目錄。

    (2)R里的dir.create()是不級聯的,就是說一次只能創建有一個“/”的路徑。如果需要兩個“/”的路徑(”E:/R_Files/R1”),就需要用dir.create()創建兩次,然后文件才創建成功。再按照例子用setwd()去設置即可。

    (3)函數setwd()是設置臨時的工作路徑(也就是說一旦你關閉了Rstudio后,工作目錄又變回原來的工作目錄)。
---------------------
作者:語希丫頭
來源:CSDN
原文:https://blog.csdn.net/mona_sunshine/article/details/53042413
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

 


 getGEO(GEO = NULL, filename = NULL, destdir = tempdir(), GSElimits=NULL,

     GSEMatrix=TRUE,AnnotGPL=FALSE)

例如:

gds <- getGEO("GDS10") 會返回一個對象,而且下載數據一般會在tmp目錄下面,當然如果你需要保存這些文件,你可以自己制定下載目錄及文件名。

gse2553 <- getGEO("GSE2553")

GDS2eSet函數可以把上面這個下載函數得到的對象(要確定是GDS而不是GSE)變成表達對象

pData和exprs函數都可以處理上面這個表達對象,從而分別得到樣品描述矩陣和樣品表達量矩陣

綜合一起就是

g4100 <- GDS2eSet(getGEO("GDS4100"))
g4102 <- GDS2eSet(getGEO("GDS4102"))
e4102<-exprs(g4102)
e4100<-exprs(g4100)

這樣的代碼,這個e4100和e4102就都是一個數值矩陣啦,可以進行下游分析,但是如果是下載的GSM數據

就用下面這個代碼,GSE26253_series_matrix.txt是通過GSEMatrix=TRUE這個參數特意下載到你的目錄的

 


 

4FL1EIEN5N8S0@C%OX9YVWX直接在下面加上這個語句,看出現什么結果。上面的funtion是一個函數,這個是調用那個函數的,在這中間會下載那個數據,最后得出return(tT)
https://www.jianshu.com/p/b879ad1ae240

我估計會下載很長時間,我看這兩個數據包都很大'GSE31056', 'GPL10526'
這里好像是一個在線GEO分析的工具

http://www.360doc.com/content/16/1030/23/19913717_602657026.shtml

 

轉我的博客

 


???

GSE26253  

Platforms (1)  GPL8432      Illumina HumanRef-8 WG-DASL v3.0

 


R語言提供了批量處理函數,可以循環遍歷某個集合內的所有或部分元素,以簡化操作。

這些函數底層是通過C來實現的,所以效率也比手工遍歷來的高效。
批量處理函數有很重要的apply族函數:lapply sapply apply tapply mapply。apply族函數是高效能計算的運算向量化(Vectorization)實現方法之一,比起傳統的for,while常常能獲得更好的性能。
    apply : 用於遍歷數組中的行或列,並且使用指定函數來對其元素進行處理。
    lapply : 遍歷列表向量內的每個元素,並且使用指定函數來對其元素進行處理。返回列表向量。
    sapply : 與lapply基本相同,只是對返回結果進行了簡化,返回的是普通的向量。
    mapply: 支持傳入兩個以上的列表。 

   tapply: 接入參數INDEX,對數據分組進行運算,就和SQL中的by group一樣。

---------------------
作者:wa2003
來源:CSDN
原文:https://blog.csdn.net/wa2003/article/details/45887055
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

 

R語言-attach、detach、with

with(onedata.frame,{     name })


R語言reads.table 自動將字符串變成了邏輯值

今天遇到了一個問題,文件中有一列的值為全為F, 用read.table 讀取的時候,自動將F 變成了false

對於這樣的轉換,可以通過 colClass 參數控制

colClass 參數指定每一列的類型,numeric, integer,  character, logical 等等,只需要將全是F的那一列指定為 character 就可以了

read.table( "file.txt" , sep = "\t",  header=FALSE, stringsAsFactors=FALSE, colClasses = c("character"))

 

其實在R里面還有一個內置的函數 .libPaths , 可以直接查看所有的路徑

用法示例:

.libPaths()
[1] "/usr/lib64/R/library"       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM