精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码aⅴ不卡中文字幕

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
R語言初學手冊

R語言的運行模式

  • 交互式: 交互式裝載和運行R文件source(“abc.R”)
  • 批處理形式: 批處理運行Rscript abc.R

向量

創建向量: 

3:8#> [1] 3 4 5 6 7 84:1#> [1] 4 3 2 1seq(3,8)#> [1] 3 4 5 6 7 8seq(3,8,2)#> [1] 3 5 7seq(from=12,to=21,by=3)#> [1] 12 15 18 21rep(0,5)#> [1] 0 0 0 0 0rep(1:2,3)#> [1] 1 2 1 2 1 2rep(c(1,2,3),each=2)#> [1] 1 1 2 2 3 3

添加刪除元素 

x<-c(1,2,3,4)x<-c(x[1:3],5.5,x[4]) #添加5.5到最后一個元素之前x#> [1] 1.0 2.0 3.0 5.5 4.0#刪除第三個元素y=x[-3]y#> [1] 1.0 2.0 5.5 4.0

獲取向量長度 

x <- c(1,2,3,4,5,6)length(x)#> [1] 6

循環補齊

下面連個運算等價

x<-c(1,2,3)+ c(1,2,3,4,5,6)x#> [1] 2 4 6 5 7 9x<-c(1,2,3,1,2,3) + c(1,2,3,4,5,6)x#> [1] 2 4 6 5 7 9

向量運算+,-,*,/,%%,>,<,== 運算都是先補齊,然后逐個元素進行運算

向量索引

y<-c(1,2,3,4,5,6)y[c(1,3)] #第1,3個元素#> [1] 1 3y[c(1,1,3)]#> [1] 1 1 3y[1:3] #第一到第三個元素#> [1] 1 2 3y[-1:-2] #負數的下標表示把相應的元素剔除#> [1] 3 4 5 6

any和all

x=seq(1,10)any(x>7)#> [1] TRUEall(x>7)#> [1] FALSEall(x>0)#> [1] TRUE

NA和NULL

NA缺失值,通常需要進行處理,如mean(x,na.rm=T)

NULL可用于在循環中創建向量

z<-NULLfor (i in 1:10) if(i %% 2 == 0) z<-c(z,i)z#> [1]  2  4  6  8 10

篩選

這里不需要一個map函數,可以直接像下面這樣使用[進行篩選

z<-c(1,2,3,4,5)#選出平方<4的元素z[z*z > 4]#> [1] 3 4 5

可以把篩選語句放在賦值運算符的左邊,如

z <- 1:5z[z*z>4] <- 0z#> [1] 1 2 0 0 0

subset也可用于篩選, 如:

z <- 5:1subset(z,z>3)#> [1] 5 4

選擇函數which()

z <- 3:7which(z*z>16) #> [1] 3 4 5#which函數也可以用于篩選中,如z[which(z*z>16)]#> [1] 5 6 7

向量化ifelse

ifelse(b,u,v)

b <- c(1,0,1,0,0)aa <- c(5,2,5,2,2)bb <- c(15,12,15,12,12)ifelse(b,aa,bb)#> [1]  5 12  5 12 12

向量元素命名:

z<- 1:3names(z) <-c('a','b','c')names(z)#> [1] "a" "b" "c"

去除重復元素

v1=c(1,2,2,3,4,3)unique.default(v1)#> [1] 1 2 3 4v1[which(!duplicated(v1))]#> [1] 1 2 3 4

向量運算

x=1:3y=4:6x+y#> [1] 5 7 9x-y#> [1] -3 -3 -3x*y#> [1]  4 10 18y / x#> [1] 4.0 2.5 2.0y %% x#> [1] 0 1 0y > x#> [1] TRUE TRUE TRUEy < x#> [1] FALSE FALSE FALSEy == x#> [1] FALSE FALSE FALSE

矩陣和數組

由向量創建矩陣

y<-matrix(c(1,2,3,4,5,6),nrow=2)y#>      [,1] [,2] [,3]#> [1,]    1    3    5#> [2,]    2    4    6y<-matrix(c(1,2,3,4,5,6),ncol=2)y#>      [,1] [,2]#> [1,]    1    4#> [2,]    2    5#> [3,]    3    6#也可用NA初始化一個矩陣y<-matrix(nrow=2,ncol=3)y#>      [,1] [,2] [,3]#> [1,]   NA   NA   NA#> [2,]   NA   NA   NA#矩陣是按列存儲的。即先存第一列再存第二列。#可以使用byrow=T參數來指定矩陣按行存儲。 #比較下面兩個矩陣的區別y<-matrix(1:16,nrow=4,byrow=T)y#>      [,1] [,2] [,3] [,4]#> [1,]    1    2    3    4#> [2,]    5    6    7    8#> [3,]    9   10   11   12#> [4,]   13   14   15   16y<-matrix(1:16,nrow=4)y#>      [,1] [,2] [,3] [,4]#> [1,]    1    5    9   13#> [2,]    2    6   10   14#> [3,]    3    7   11   15#> [4,]    4    8   12   16

矩陣訪問

y[,2] #取出y的第二列#> [1] 5 6 7 8y[1:2,] #取出y的第一二行#>      [,1] [,2] [,3] [,4]#> [1,]    1    5    9   13#> [2,]    2    6   10   14y[,1:2] #取出y的第一二列#>      [,1] [,2]#> [1,]    1    5#> [2,]    2    6#> [3,]    3    7#> [4,]    4    8y[2:3,2:3] #取出y的子矩陣#>      [,1] [,2]#> [1,]    6   10#> [2,]    7   11

矩陣元素篩選

矩陣元素篩選

#取出y的行,其第二列>7,并且第三列>10y[y[,2]>7 & y[,3]>10,]#> [1]  4  8 12 16

矩陣運算

矩陣相乘 %\*%  這個不是逐元素計算的,而是數學上的矩陣相乘,要逐元素相乘,使用*運算符

對矩陣的行和列調用函數

apply(m,dimcode,f,fargs) m是矩陣,dimcode指定行或者列,1表示行,2表示列。f為要使用的函數,fargs是可選參數

apply(y,1,mean) 對y每行求平均。

apply(y,1,mean)#> [1]  7  8  9 10

需要注意apply函數返回的矩陣元素排列的行列問題,必要時使用t()函數對矩陣進行轉置。

改變矩陣大小

cbind,rbind分別為矩陣添加列和添加行,兩個向量也可以直接構造矩陣,

cbind(c(1,2),c(3,4))#>      [,1] [,2]#> [1,]    1    3#> [2,]    2    4

矩陣的長度

因為矩陣也是向量,所以length(y)返回的是矩陣的元素個數。nrow(y),ncol(y)分別返回矩陣的行數和列數

矩陣的行列命名

y <- matrix(1:4,nrow=2)colnames(y)<-c('col1','col2')rownames(y)<-c('row1','row2')y#>      col1 col2#> row1    1    3#> row2    2    4

數組

數組的構造

array(data = NA, dim = length(data), dimnames = NULL)

高維數組

R中用不同的行表示不同的觀測,不同的列表示不同的變量,如果再添加上時間變量,數據就變成三維的了。三維數組是在矩陣的基礎上再添加一個層的概念。如

firsttest<-matrix(c(1,2,3,4),ncol=2)secondtest<-matrix(c(5,6,7,8),ncol=2)tests<-array(c(firsttest,secondtest),dim=c(2,2,2))tests#> , , 1#> #>      [,1] [,2]#> [1,]    1    3#> [2,]    2    4#> #> , , 2#> #>      [,1] [,2]#> [1,]    5    7#> [2,]    6    8

其中dim最后一個2表示數據分為兩層。tests中的數據由三個下標來訪問。

一維數組和向量的區別

x=1:10xa=array(x)x#>  [1]  1  2  3  4  5  6  7  8  9 10xa#>  [1]  1  2  3  4  5  6  7  8  9 10#dim的返回值不同dim(x)#> NULLdim(xa)#> [1] 10#class不同class(x)#> [1] "integer"class(xa)#> [1] "array"

二維數組和矩陣的區別

列表

創建列表

j<-list(name='jianghang',age=24,salary=1000,url='http://www.bagualu.net')j#> $name#> [1] "jianghang"#> #> $age#> [1] 24#> #> $salary#> [1] 1000#> #> $url#> [1] "http://www.bagualu.net"k<-list(1:5,2:10)k#> [[1]]#> [1] 1 2 3 4 5#> #> [[2]]#> [1]  2  3  4  5  6  7  8  9 10

列表元素訪問

j[['name']]#> [1] "jianghang"j[[1]]#> [1] "jianghang"j[1]#> $name#> [1] "jianghang"#列表中的名字names(j)#> [1] "name"   "age"    "salary" "url"

注意雙中括號和單中括號的區別,單中括號返回的是列表類型,雙中括號則返回的是單個元素類型。

添加元素

j[['phone']]=13623232323

刪除元素

j[['phone']]=NULL

獲取列表長度

length(j)#> [1] 4

列表上的apply函數

lapply()對列表的每個組件執行給定函數,如

lapply(list(1:3,2:4),mean) #返回列表形式。#> [[1]]#> [1] 2#> #> [[2]]#> [1] 3sapply(list(1:3,2:4),mean) #返回的是向量形式。#> [1] 2 3

sapply也可以返回矩陣形式,如果執行的函數返回的是向量。

遞歸列表定義

rl<-list(a=1,b=list(1:3,2:4))rl#> $a#> [1] 1#> #> $b#> $b[[1]]#> [1] 1 2 3#> #> $b[[2]]#> [1] 2 3 4

數據框

數據框結構類似矩陣,只是每列的數據類型可以不一樣。但是每列的長度是要求一樣的。

創建數據框:d<-data.frame(a=c(1,2,3,4),names=c(“a”,”b”,”c”,”d”))

訪問元素:d$a 訪問a列, d$names訪問names列, 也可用矩陣方式來訪問: d[,1] 得到d的第一列

提取子數據框: d[2:3,2,drop=FALSE] 注意這里的drop參數,表示返回的依然是一個數據框而不是向量

缺失值的處理: 如果d中有NA,可以用complete.cases來去掉缺失值. d[complete.cases(d),] 即為沒有缺失值的行組成的數據框

rbind和cbind可同樣用于數據框,只是要求行或者列的長度與原數據框一樣

如果數據框的每列數據類型相同,可以使用apply函數, 使用方法和矩陣一樣。

合并數據框:merge(x,y), merge根據x,y中的同名列來合并x,y的列. 如果x,y中沒有同名的列,可以用by.x , by.y來指定列的名字。

數據框是列表的特列,可以像列表那樣在數據框上使用lapply和sapply

 因子和水平

x<-c(5,12,13,12)

xf<-factor(x)    因子xf包含有三個水平5,12,13 , 因子長度length(xf)是數據的長度為4,即c(1,2,3,2),而不是因子的個數

tapply(x,f,g) 函數,  其中x是向量,f是因子,g是函數。意思是對因子f的每個水平調用函數g。

如ages<-c(25,26,27,55)  aff<-c(“A”,”A”,”B”,”C”)  tapply(ages,aff,mean) ,先對ages按照aff分組,然后每組求平均。

split()函數 ,將向量根據因子進行分組。 基本形式為split(x,f)  ,返回值為list類型,x為向量或者數據框,f為因子或者因子的列表。, 如split(d$income,list(d$gender,d$over25))  其中d為一個數據框,包含有列income,gender,over25.

by()函數和tapply相似,區別是by可以作用于數據框,而不僅僅是向量。如by(d,d$gender,function(m) lm(m[,2]~[,3])) 表示對數據框d,先按照gender因子分組,然后對每組進行回歸分析。

表的操作:fl<-list(c(5,12,13,12,13),c(“a”,”bc”,”a”,”bc”,”a”))   table(fl) 將生成兩個因子的頻數表。因此table的第一個參數為因子或者因子的列表 , 列表也可以是三維的或1維的。

table元素的訪問也可以像矩陣一樣通過下標來訪問。另外可以通過addmargins(tbl)來獲得該表的邊際值。

aggregate()匯總函數,實例:aggregate(aba[,-1],list(aba$Gender),median) , 表示取數據框第一列以外的其他列,按照Gender分組后,對每一列(每個變量)調用median函數。

cut()函數,該函數給定一個數據向量x,一個區間向量b,確定x中每個元素將落入哪個區間。返回區間的序號向量。

如z<-rnorm(10) bin<-seq(from=0.0,to=1.0,by=0.1)  cut(z,bin,labels=F) 即計算z的每個值位于bin的哪個區間。

 R語言編程結構

for (n in x) {print(n)}

i<-10 while(i>0) { i <- i -1}

while(TRUE) { i <- i +1  if (i<0) break}

repeat {i <-i-1  if(i<0) break}

直接進行下一次循環,用next語句

if( x== 4) { x<- 1 } else{ x<-2}

算術運算及邏輯運算符:

+,-,*,/,^,%%(模運算),%/%(整數除法),==,<=,>=,&&(標量邏輯與操作),||,&(向量邏輯與操作),|,!

數學函數

exp(),log(),log10(),seqrt(),abs(),sin(),cos(),min(),max(),which.min(),which.max(),pmin(),pmax(),sum(),prod(), cumsum(),cumprod(),round(),floor(),ceiling(), factorial()

微分: D(expression(exp(x^2)),”x”) , 給出微分形式

積分: integrate(function(x) x^2,0,1) —>0.333

統計分布函數: [dpqr][norm|chisq|binom] 等函數  d概率密度函數,p累計分布,q對應分布的分位數,r隨機生成函數

排序:sort(x) , order(x) , order函數返回的排序后的索引向量,可用于對數據框進行排序。 rank(x) 返回每個元素在向量中的排名序號。

向量點積:  crossprod(1:3,c(5,12,13))   注意這個名字有些問題,計算的是點積(1*5+2*12+3*13)而不是叉積。

矩陣乘法: %*%

解線性方程組: solve(a,b) ,  a是系數矩陣,b是方程右邊的值。 如果調用solve時不指定b,則返回矩陣a的逆矩陣。

更多函數: t() 矩陣轉置, qr() 矩陣QR分解, chol() Cholesky分解 , det() 矩陣行列式的值, eigen()矩陣的特征值和特征向量

diag() 從方陣中提出對角矩陣 sweep() 數值分析批量運算符

sweep舉例:sweep(x,1,c(1,2,3),”+”) 表示對矩陣x的1,2,3行分別加上數值1,2,3 , 第二個參數1表明是對行進行操作。

集合運算: union(x,y)并集 , intersect(x,y) 交集, setdiff(x,y)集合的差, seqequal(x,y)檢驗集合是否相等 c %in% x 判斷x是否在集合x里面

S3類

尋找泛型函數:methods(print)  列出所有的print函數,標星的為不在默認命名空間中的函數,可以通過getAnywhere()來找到這些函數,然后使用命名空間限定符訪問他們。getAnywhere(print.ABC)  , 如果找到會列出其所在的命名空間(假設為util),然后利用util:::print.ABC() 來調用這個函數。

查找一個類中所有的函數可以利用 methods(class=”lm”)后面的lm 為類名。

編寫一個s3類,只需給定類名即可,class(alist)<-className  為類添加方法:

print.className<-function() 這樣,print(className)即會調用到這個方法。

繼承: 給定類名時,給出的是一個向量而不是一個名字,前面的類繼承后面的類。

如: class(x)<-c(subclass,parentClass)

這樣父類定義的方法,子類也可以使用。

S4類

s3類有安全隱患,因為有時候成員變量寫錯了,s3并不會給提示。S4類加強了這類檢查。語法上也有不同。

定義類: setClass()

創建對象 : new()

引用成員變量 @

實現泛型函數: setMethod()

聲明泛型函數: setGeneric()

對象管理

列出所有的對象: ls()

刪除對象: rm() , 刪除所有對象: rm(list=ls())

保存對象: save(x,”xfile”) 把x保存在文件xfile中,后面可以用load(“xfile”)裝載這個對象

查看對象內部結構:class(x) mode(x) names(x) attributes(x) unclass(x) str(x) edit(x)  edit函數可以看到該對象的所有數據,看起來最有用了。

exists(“x”) 查看對象是否存在 其中x為對象名字,需要用引號

讀文件

scan()函數 , 讀取文本文件,缺省情況下讀取文件中以空格分割的所有浮點數值。 即scan(“a.txt”) , 返回一個向量

如果文件中包含非數值,可以字符串形式讀入,scan(“a.txt”,what=””) , 返回所有已空格分割的字符串向量。

如果指定分隔符為換行,scan(“a.txt”,what=””,sep=”\n”) 返回以換行分割的字符串向量

readline() 可以從鍵盤讀取單行數據,如age<-readline(“input the age:”)

如果數據為表格形式:因為有表頭,用scan不能讀入,可以用read.table()函數。

如果全是數據,且為矩陣形式,可以用matrix+ scan讀入矩陣,x<-matrix(scan(“x”),nrow=5,byrow=T)

readLines(“a.txt”) 可以讀取文本文件,每一行當做一個字符串。等價于scan中指定分隔符為換行

readLines也可以一次讀取一行:如下:
aa<-file(“a.txt”,”r”)

while(T){

rl<-readLines(aa,n=1)
if(length(rl) ==0) {print(“feof”)   break}

else{print(rl)}
}

seek()函數可以移動文件指針。

read.table和scan也可以以網站地址作為參數,一次來讀取網絡上的數據。read.table(“http://xx.xx.xx”,head=T)

寫文件

write.table() 把數據框輸出到文件

矩陣也可以直接利用write.table寫入文件,不過要聲明row.names=F,col.names=F ,即不輸出行名和列名

cat也可以用來寫文件, cat(“def\n”,file=”xx”,append=T) 追加的時候要加上append參數

cat可以一次寫多個值,cat(file=”xx”,”a”,”b”,”c”)

writeLines()

ff<-file(“www”,”w”)

writeLines(c(“abc”,”def”,”gg”),ff)

close(ff)

將生成一個三行的文件。

獲取文件目錄信息

file.info()

dir() 列出指定目錄中所有的文件,可選參數recursive=T可遞歸列出所有的子目錄文件

file.exists()判斷文件是否存在

getwd() setwd()獲得和設置當前工作目錄

文件copy等

file.copy(from, to, overwrite = recursive, recursive = FALSE,               copy.mode = TRUE, copy.date = FALSE)file.rename(from, to)file.remove(...)

字符串操作

grep()  grep(“he”,c(“hello”,”world”,”hhe”,”haha”))  —>返回c(1,3) ,如果沒有匹配的,則返回一個空向量

nchar(“abc”)  —>3   返回字符串的長度, 注意如果參數不是字符串,返回值可能無法預料,如nchar(NA)=2

paste(“a”,”b”,”c”)  —>”abc”  拼接字符串, 可以指定sep=”” ,指定拼接是的分隔符

把一個字符串向量拼接成單個字符串,使用collapse參數。如:

aa=c("hello","world")paste(aa,collapse=" ")#> [1] "hello world"
  • 抽取字符串,使用stringr::str_extract , 如下所示
aa=c("markdown/p123.html","markdown/p345.html","markdown/p789.html")bb=stringr::str_extract(aa,"p\\d+")bb#> [1] "p123" "p345" "p789"sprintf("%s.md",bb)#> [1] "p123.md" "p345.md" "p789.md"
  • 替換
stringi::stri_replace_all_regex("aaa-bb","(a+)\\-(b+)","$1+$2")#> [1] "aaa+bb"

sprintf(“aa is %d”,4)  生成格式化的字符串

substr(x,start,stop) 返回字符串x的start:stop上的子字符串

strsplit(x,split) 根據split將x分割成若干字符串,返回字符串組成的列表

regexpr(“he”,”wwwhe”)  返回he在后面字符串中出現的位置,此例返回4

gregexpr , 意義同上面的函數,只是返回所有的位置,而不僅僅是第一個位置

上面的grep,regexpr,gregexpr等函數,第一個參數可以是正則表達式

  • 字符串替換 sub/gsub可以用來替換字符串中的給定模式。調用方式為 sub(pattern,replacement,x)
aa=c("hello","world","!")bb=sub('l',"L",aa)bb#> [1] "heLlo" "worLd" "!"bb=gsub('l',"L",aa)bb#> [1] "heLLo" "worLd" "!"
  • 解析網頁時指定編碼

library(XML)
doc<-htmlTreeParse(url,useInternalNodes=T,encoding=”gb2312″)

如果是utf8編碼的網頁,則不需要后面的兩個參數.

全局參數

獲得所有的參數使用options(), 設置某個參數,比如stringsAsFactors 使用options(stringAsFactors = FALSE)

下面是所有的參數,供參考

options()#> $add.smooth#> [1] TRUE#> #> $bitmapType#> [1] "cairo"#> #> $browser#> [1] "xdg-open"#> #> $browserNLdisabled#> [1] FALSE#> #> $CBoundsCheck#> [1] FALSE#> #> $check.bounds#> [1] FALSE#> #> $citation.bibtex.max#> [1] 1#> #> $continue#> [1] "+ "#> #> $contrasts#>         unordered           ordered #> "contr.treatment"      "contr.poly" #> #> $defaultPackages#> [1] "datasets"  "utils"     "grDevices" "graphics"  "stats"    #> #> $demo.ask#> [1] "default"#> #> $deparse.cutoff#> [1] 60#> #> $device#> function (width = 7, height = 7, ...) #> {#>     grDevices::pdf(NULL, width, height, ...)#> }#> <environment: namespace:knitr>#> #> $device.ask.default#> [1] FALSE#> #> $digits#> [1] 7#> #> $dvipscmd#> [1] "dvips"#> #> $echo#> [1] FALSE#> #> $editor#> [1] "vi"#> #> $encoding#> [1] "native.enc"#> #> $example.ask#> [1] "default"#> #> $expressions#> [1] 5000#> #> $help.search.types#> [1] "vignette" "demo"     "help"    #> #> $help.try.all.packages#> [1] FALSE#> #> $HTTPUserAgent#> [1] "R (3.2.2 x86_64-pc-linux-gnu x86_64 linux-gnu)"#> #> $internet.info#> [1] 2#> #> $keep.source#> [1] FALSE#> #> $keep.source.pkgs#> [1] FALSE#> #> $knitr.in.progress#> [1] TRUE#> #> $locatorBell#> [1] TRUE#> #> $mailer#> [1] "mailto"#> #> $max.print#> [1] 99999#> #> $menu.graphics#> [1] TRUE#> #> $na.action#> [1] "na.omit"#> #> $nwarnings#> [1] 50#> #> $OutDec#> [1] "."#> #> $pager#> [1] "/usr/lib/R/bin/pager"#> #> $papersize#> [1] "a4"#> #> $pdfviewer#> [1] "/usr/bin/xdg-open"#> #> $pkgType#> [1] "source"#> #> $printcmd#> [1] "/usr/bin/lpr"#> #> $prompt#> [1] "> "#> #> $repos#>     CRAN #> "@CRAN@" #> #> $rl_word_breaks#> [1] " \t\n\"\\'`><=%;,|&{()}"#> #> $scipen#> [1] 0#> #> $show.coef.Pvalues#> [1] TRUE#> #> $showErrorCalls#> [1] TRUE#> #> $show.error.messages#> [1] TRUE#> #> $show.signif.stars#> [1] TRUE#> #> $str#> $str$strict.width#> [1] "no"#> #> $str$digits.d#> [1] 3#> #> $str$vec.len#> [1] 4#> #> #> $str.dendrogram.last#> [1] "`"#> #> $stringsAsFactors#> [1] TRUE#> #> $texi2dvi#> [1] "/usr/bin/texi2dvi"#> #> $tikzMetricsDictionary#> [1] "p4912-tikzDictionary"#> #> $timeout#> [1] 60#> #> $ts.eps#> [1] 1e-05#> #> $ts.S.compat#> [1] FALSE#> #> $unzip#> [1] "/usr/bin/unzip"#> #> $useFancyQuotes#> [1] FALSE#> #> $verbose#> [1] FALSE#> #> $warn#> [1] 0#> #> $warning.length#> [1] 1000#> #> $width#> [1] 65


本文地址: http://www.bagualu.net/wordpress/archives/4912 轉載請注明


本站僅提供存儲服務,所有內容均由用戶發布,如發現有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
R語言函數總結
掌握R語言中的apply函數族 | 粉絲日志
R語言系列第一期(番外篇 ):R的6種對象—向量、矩陣、數組、因子、列表、數據框
【量化小科普】MATLAB金融工具箱入門
R語言學習筆記
2.S向量
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯系客服!

聯系客服

主站蜘蛛池模板: 彩票| 襄垣县| 贡山| 五常市| 阿拉善盟| 永泰县| 吉安县| 九寨沟县| 嘉禾县| 洮南市| 敖汉旗| 威信县| 绥芬河市| 涪陵区| 白山市| 内乡县| 长武县| 西丰县| 上蔡县| 砚山县| 亚东县| 辛集市| 龙岩市| 桃江县| 西乡县| 正宁县| 沁水县| 双城市| 讷河市| 故城县| 富川| 沙河市| 麻阳| 阿克陶县| 炎陵县| 随州市| 罗甸县| 桐梓县| 堆龙德庆县| 安阳县| 扶风县|