R 语言实战(第二版)

part 5-1 技能拓展


----------第19章 使用ggplot2进行高级绘图-------------------------

  1. #R的四种图形系统:
  2. #①base:基础图形系统
  3. #②grid图形系统: grid包,灵活,无完整绘图函数,适用开发者
  4. #③lattice包:适用网格图形,即多变量/水平关系。基于grid包
  5. #④ggplot2包:数据可视化利器
  6. #前三者在基础安装中已包含,后三者使用时需显示加载
  7. #1.以一个例子介绍ggplot2
  8. library(ggplot2)
  9. ggplot(data=mtcars,aes(x=wt,y=mpg))+ #aes(aesthetics)指定每个变量扮演角色
  10. geom_point()+
  11. labs(title = "automobile data",x="weight",y="miles per gallon")
  12. #参数拓展
  13. ggplot(data=mtcars,aes(x=wt,y=mpg))+
  14. geom_point(pch=17,color="red",size=2)+
  15. geom_smooth(method = "lm",color="red",linetype=2)+ #平滑曲线阴影默认95%置信区间
  16. labs(title = "automobile data",x="weight",y="miles per gallon")
  17. #分组/刻面
  18. mtcars$am <- factor(mtcars$am,levels = c(0,1),labels = c("automatic","manual"))
  19. mtcars$vs <- factor(mtcars$vs,levels = c(0,1),labels = c("v-engine","straight engine"))
  20. mtcars$cyl <- factor(mtcars$cyl)
  21. ggplot(mtcars,aes(hp,mpg,shape=cyl,color=cyl))+
  22. geom_point(size=3)+
  23. facet_grid(am~vs)
  24. #am和vs是刻面变量,cyl是分组变量
  25. #2.几何函数指定图类型
  26. #共37个
  27. # geom_bar() options: color,fill,alpha
  28. # geom_boxplot() color,fill,alpha,notch,width
  29. # geom_density() color,fill,alpha,linetype
  30. # geom_histogram() color,fill,alpha,linetype,binwidth
  31. # geom_hline() color,alpha,linetype,size
  32. # geom_jitter() #抖动点 color,alpha,shape
  33. # geom_line() clorvalpha,linetype,size
  34. # geom_point() color,alpha,shape,size
  35. # geom_rug() #d地毯图 color,side
  36. # geom_smooth() method,formula,color,fill,linetype,size
  37. # geom_text() #文字注解,很多参数
  38. # geom_violin() color,fill,alpha,linetype
  39. # geom_vline() olor,alpha,linetype,size
  40. data(singer,package = "lattice")
  41. ggplot(singer,aes(height))+geom_histogram()
  42. ggplot(singer,aes(voice.part,height))+geom_boxplot()
  43. ggplot(singer,aes(voice.part,height))+geom_violin()
  44. library(car)
  45. ggplot(Salaries,aes(rank,salary))+
  46. geom_boxplot(fill="cornflowerblue",color="black",notch = T)+
  47. geom_point(position = "jitter",color="blue",alpha=.5)+
  48. geom_rug(sides = "l",color="black") #sides地毯图安置方向:b底,l左,t顶,r右,bl左下
  49. #箱线图槽口没有重叠,差异显著?
  50. #几何函数组合的威力
  51. ggplot(singer,aes(voice.part,height))+
  52. geom_violin(fill="lightblue")+
  53. geom_boxplot(fill="lightgreen",width=.2)
  54. #3.分组
  55. #组:分类变量的水平(因子),用形状、颜色、填充、尺寸、线型等特征映射,aes分配变量(特征)
  56. head(Salaries)
  57. ggplot(Salaries,aes(salary,fill=rank))+geom_density(alpha=.3)
  58. ggplot(Salaries,aes(yrs.since.phd,salary,color=rank,shape=sex))+geom_point()
  59. ggplot(Salaries,aes(rank,fill=sex))+geom_bar(position = "stack")+ #堆叠
  60. labs(title = "postion=stack")
  61. ggplot(Salaries,aes(rank,fill=sex))+geom_bar(position = "dodge") #并排
  62. ggplot(Salaries,aes(rank,fill=sex))+geom_bar(position = "fill")+#按比例
  63. labs(y="proportion")
  64. #参数在aes()内和外的区别
  65. ggplot(Salaries,aes(rank,fill=sex))+geom_bar()
  66. ggplot(Salaries,aes(rank))+geom_bar(aes(fill=sex)) #同上
  67. ggplot(Salaries,aes(rank))+geom_bar(fill="blue")
  68. ggplot(Salaries,aes(rank,fill="blue"))+geom_bar() #此时的"blue"视为一个变量名
  69. #一般来说,变量应设在aes内,常数应分配在aes外
  70. #4. 刻面
  71. #即网格图形
  72. facet_wrap(~var,ncol=n) #var个水平排成n列
  73. facet_wrap(~var,nrow = n)#var个水平排成n
  74. facet_grid(rowvar~colvar) #排成rowvar和colvar水平组合的图
  75. facet_grid(rowvar~.) #每个rowvar水平的单列图
  76. facet_grid(.~colvar) #每个colvar水平的单行图
  77. ggplot(singer,aes(height))+
  78. geom_histogram()+
  79. facet_wrap(~voice.part,nrow=4)
  80. ##刻面和分组相结合
  81. ggplot(Salaries,aes(yrs.since.phd,salary,color=rank,shape=rank))+
  82. geom_point()+facet_grid(.~sex)
  83. ggplot(singer,aes(height,fill=voice.part))+
  84. geom_density()+facet_grid(voice.part~.)
  85. #5.添加光滑曲线
  86. #平滑曲线包括线性、非线性、非参数(loess)等
  87. #参数:method——smooth(默认)/lm/glm/rml/gam;formula——y~x(默认)/y~log(x)/y~ploy(x,n);
  88. #se——置信区间(T/F),默认T;level——默认95%置信区间水平;fullrange——拟合涵盖全图(T)/仅数据(F),默认F
  89. ggplot(Salaries,aes(yrs.since.phd,salary))+geom_smooth()+geom_point()
  90. #按性别拟合一个二次多项式回归
  91. ggplot(Salaries,aes(yrs.since.phd,salary,linetype=sex,shape=sex,color=sex))+
  92. geom_smooth(method = lm,formula = y~poly(x,2),se=F,size=1)+
  93. geom_point(size=2)
  94. #geom_smooth函数依赖于stat_smooth()函数来计算画出一个拟合曲线及其置信限所需的数量。更多信息介绍在stat_smooth函数中
  95. #6.修改ggplot2图形外观
  96. #R基本图形参数如par()函数等对ggplot2无作用,但它有特定函数来改变图形外观
  97. ##坐标轴:
  98. scale_x_continuous(breaks = c(1,10,2),labels = c("a","b","c"),limits = c(1,12)) #连续变量
  99. scale_y_continuous()
  100. scale_x_discrete(breaks,labels,limits) #因子水平
  101. scale_y_discrete()
  102. coord_flip()
  103. p <- ggplot(Salaries,aes(rank,salary,fill=sex))+geom_boxplot()+
  104. scale_x_discrete(breaks=c("asstprof","assocprof","prof"),
  105. labels=c("assistant\nprofessor",
  106. "associate\nprofessor",
  107. "full\nprofessor"))+
  108. scale_y_continuous(breaks = c(50000,100000,150000,200000),
  109. labels = c("$50k","$100k","$150k","$200k"))
  110. p
  111. #横轴标签不见了??
  112. #7.图例
  113. #常定制标题和位置。映射aes中的fill,因此在labs()中通过fill=来修改标题。
  114. p+labs(title = "faculty salary by rank and sex",x="",y="",fill="Gender")+
  115. theme(legend.position = c(0.2,0.8)) #分别据左侧和底部边缘的百分比距离。"left/right(default)/top/bottom/none"
  116. #删除图例"none"
  117. #8.标尺
  118. #把数值映射到可视化空间
  119. ggplot(mtcars,aes(wt,mpg,size=disp))+ #disp发动机排量连续变量
  120. geom_point(shape=21,color="black",fill="cornsilk")
  121. ggplot(Salaries,aes(yrs.since.phd,salary,color=rank))+ #rank离散变量,对应设置的颜色
  122. scale_color_manual(values = c("orange","olivedrab","navy"))+
  123. geom_point(size=2)
  124. ggplot(Salaries,aes(yrs.since.phd,salary,color=rank))+
  125. scale_color_brewer(palette = "Set1")+ #指定颜色集,同理sale_fill_brewer
  126. geom_point(size=2)
  127. #查看颜色集
  128. library(RColorBrewer)
  129. display.brewer.all()
  130. #9.主题
  131. #theme函数调整字体、背景、颜色、网格线等
  132. library(ggplot2)
  133. mytheme <- theme(plot.title = element_text(face = "bold.italic",size = 14,color="brown"), #图标题
  134. axis.title = element_text(face = "bold.italic",size = 10,color = "brown"), #轴标题
  135. axis.text = element_text(face = "bold",size = 9,color = "darkblue"), #轴标签
  136. panel.background = element_rect(fill="white",color = "darkblue"), #画图区域
  137. panel.grid.major.y = element_line(color = "grey",linetype = 1), #主水平网格线
  138. panel.grid.minor.y = element_line(color="grey",linetype = 2), #次水平网格线
  139. panel.grid.minor.x = element_blank(),
  140. legend.position = "top")
  141. ggplot(Salaries,aes(rank,salary,fill=sex))+
  142. geom_boxplot()+
  143. labs(title="salary by rank and sex",x="rank",y="salary")+
  144. mytheme
  145. #10.多重图
  146. #基础函数中的mfrow和layout函数不适用于ggplot2,而是grid.arrange函数
  147. p1 <- ggplot(Salaries,aes(rank))+geom_bar()
  148. p2 <- ggplot(Salaries,aes(sex))+geom_bar()
  149. p3 <- ggplot(Salaries,aes(yrs.since.phd,salary))+geom_point()
  150. library(gridExtra)
  151. grid.arrange(p1,p2,p3,ncol=3) #默认按行
  152. #11.保存图形
  153. myplot <- ggplot(mtcars,aes(mpg))+geom_histogram()
  154. ggsave(file="mygraph.png",plot=myplot,width = 5,height = 4) #英寸*约1.25=cm
  155. ggsave("mygraph.png")#保存最近创建的图形

------------------------第20章 高级编程-----------------------------

  1. #面向对象(可被存储和命名的数据、函数和其他任何东西)编程
  2. #每个对象都有属性,一个关键的属性是对象的类,R函数根据对象类的信息来处理对象
  3. #attributes()函数罗列属性,attr()函数设置属性,class()函数读取和设置对象的类
  4. #1.数据结构
  5. #1)原子向量:向量、矩阵、数组
  6. x <- c(1,2,3,4,5,6,7,8)
  7. class(x)
  8. print(x)
  9. attr(x,"dim") <- c(2,4) #给x加一个dim属性
  10. print(x)
  11. class(x)
  12. attributes(x)
  13. attr(x,"dimnames") <- list(c("A1","A2"),
  14. c("B1","B2","B3","B4")) #给x再加一个dimnames属性
  15. print(x)
  16. attr(x,"dim") <- NULL #去除dim属性
  17. class(x)
  18. print(x)
  19. #2)泛型向量(即列表):数据框、列表
  20. #列表很重要,R函数通常返回列表作为值
  21. #数据框是一种特殊的列表,集合中每个原子向量都有相同的长度
  22. head(iris)
  23. unclass(iris) #这个数据框是5个原子向量的列表
  24. attributes(iris) #3个属性
  25. set.seed(1234)
  26. fit <- kmeans(iris[1:4],3)
  27. str(fit) #查看对象结构
  28. unclass(fit) #查看对象内容
  29. length(fit)
  30. names(fit)
  31. attributes(fit)
  32. sapply(fit,class)
  33. #任何对象中的元素都可通过索引来提取
  34. x <- c(20,30,40)
  35. x[3]
  36. x[c(2,3)]
  37. x <- c(A=20,B=30,C=40)
  38. x[c(2,3)]
  39. x[c("B","C")]
  40. fit[c(2,7)]
  41. fit[2] #返回列表
  42. fit[[2]] #返回矩阵
  43. fit$centers #数据框也是列表,所以才也可如此操作
  44. #例子:画出K means聚类分析的中心
  45. set.seed(1234)
  46. fit <- kmeans(iris[1:4],3)
  47. means <- fit$centers
  48. library(reshape2)
  49. dfm <- melt(means)
  50. names(dfm) <- c("Cluster","Measurement","Centimeters")
  51. dfm$Cluster <- factor(dfm$Cluster)
  52. head(dfm)
  53. library(ggplot2)
  54. ggplot(data = dfm,aes(x=Measurement,y=Centimeters,group=Cluster))+
  55. geom_point(size=3,aes(shape=Cluster,color=Cluster))+
  56. geom_line(size=1,aes(color=Cluster))+
  57. ggtitle("Profiles for Iris Clusters")
  58. #2.控制结构
  59. #for/if()else/ifelse/for/while/repeat/switch
  60. for(i in 1:5){print(1:i)}
  61. for (i in 5:1) print(i:1)
  62. if(interactive()){ #代码是否交互运行
  63. plot(x,y)
  64. }else{
  65. png("myplot.png")
  66. plot(x,y)
  67. dev.off()
  68. }
  69. #向量循环
  70. pvalues <- c(0.234,0.12,0.002,0.34,0.004)
  71. ifelse(pvalues<0.05,"significant","not significant")
  72. #显示循环(耗时)
  73. results <- vector(mode = "character",length = length(pvalues)) #初始化
  74. for(i in 1:length(pvalues)){
  75. if(pvalues[i]<0.05) results[i] <- "significant"
  76. else results[i] <- "not significant"
  77. }
  78. results
  79. #3.创建函数
  80. f <- function(x,y,z=1){
  81. result <- x+2*y+3*z
  82. return(result)
  83. }
  84. f(2,3,4)
  85. f(2,3)
  86. f(x=2,y=3)
  87. f(z=4,y=2,3)
  88. args(f) #arg查看函数的参数及其默认值(主要用于交互式观测)
  89. formals(f) #formals查看参数及其默认值(主要用于编程中,返回列表)
  90. #参数是按值传递的,而不是按地址
  91. result <- lm(height~weight,data=women) #women生成副本后再传给函数
  92. #对象的作用范围:全局/局部
  93. x=2;y=3;z=4
  94. f <- function(w){
  95. z <- 2
  96. x <- w*y*z
  97. return(x)
  98. }
  99. f(x) #x的副本传入f函数中,return返回结果。x本身不变
  100. x
  101. y
  102. z
  103. #4.环境
  104. #包括框架和外壳
  105. #框架:"对象-内容"的集合;外壳:指向封闭环境(父环境)的一个指针
  106. x <- 5 #当前处于全局环境
  107. myenv <- new.env() #创建一个新环境
  108. assign("x","Homer",env=myenv) #在新环境中创建任务:x的对象其值为Homer
  109. ls()
  110. ls(myenv)
  111. x
  112. get("x",env=myenv) #从环境中得到对象的值
  113. #也可用$符号
  114. myenv <- new.env()
  115. myenv$x <- "Homer"
  116. myenv$x
  117. #展示父环境
  118. parent.env(myenv)
  119. #myenv的父环境就是全局环境
  120. #函数是对象,所以也有环境。函数一旦被创建,里面的对象就存在环境中。这在函数闭包(以创建时状态被打包的函数)中很重要
  121. trim <- function(p){
  122. trimit <- function(x){
  123. n <- length(x)
  124. lo <- floor(n*p)+1
  125. hi <- n+1-lo
  126. x <- sort.int(x,partial = unique(c(lo,hi)))[lo:hi]
  127. }
  128. trimit
  129. }
  130. #以上trim(p)函数返回一个函数,即从是两种修剪掉高低值的p%
  131. x <- 1:10
  132. trim10p <- trim(0.1) #p在trimit函数的环境中
  133. y <- trim10p(x)
  134. y
  135. trim20p <- trim(0.2)
  136. y <- trim20p(x)
  137. y
  138. ls(environment(trim10p))
  139. get("p",env=environment(trim10p))
  140. #函数中包含函数的另一个例子
  141. makeFunction <- function(k){
  142. f <- function(x){
  143. print(x+k)
  144. }
  145. }
  146. g <- makeFunction(10)
  147. g(4)
  148. k <- 2
  149. g(5) #无论在全局环境中设置k是什么,g()函数使用k=10?,因为当g函数被创建时即已赋值
  150. #5.面向对象的编程
  151. #两个分离的面向对象编程的模型:S3模型(更老、简单、结构少),S4模型(更新且复杂)
  152. #对象——>类属性——>泛型函数——>执行
  153. #example:
  154. summary(women)
  155. fit <- lm(weight~height,data=women)
  156. summary(fit)
  157. summary #查看该泛型函数代码。UseMethod函数将对象分给一个泛型函数,前提是该泛型函数有扩展与对象的类属性匹配
  158. class(women) #data.frame类属性,即判断是否有summary.data.frame(women)存在,否则执行summary.default(women)
  159. class(fit) #fit对象类属性,即判断是否有summary.lm(fit)存在,否则执行summary.default(fit)
  160. methods(summary) #列出可获得的S3泛型函数
  161. #查看泛型函数源码(针对可见函数,即名字后没加星号的函数)
  162. summary.data.frame
  163. summary.lm
  164. getAnywhere(summary.ggplot)#针对不可见函数,即名字后加星号的函数,查看时去掉星号
  165. getAnywhere(summary.ecdf)
  166. #常见的对象的类属性:umeric/matrix/data.frame/array/lm/glm/table.....
  167. #常见的泛型函数:print/plot/summary......
  168. #实际上,对象的类属性可以是任意字符串,泛型函数也可以是任意函数
  169. #一个自定义的任意的泛型函数例子:
  170. #定义泛型函数
  171. mymethod <- function(x,...) UseMethod("mymethod")
  172. mymethod.a <- function(x) print("using A")
  173. mymethod.b <- function(x) print("using B")
  174. mymethod.default <- function(x) print("using Default")
  175. #给对象分配类
  176. x <- 1:5
  177. y <- 6:10
  178. z <- 10:15
  179. class(x) <- "a"
  180. class(y) <- "b"
  181. #将泛型函数应用到对象中
  182. mymethod(x)
  183. mymethod(y)
  184. mymethod(z)
  185. #将泛型函数应用到包含两个类的对象中
  186. class(z) <- c("a","b")
  187. mymethod(z) #分配到多个类时,第一类来决定哪个泛型函数被调用
  188. #泛型函数没有默认为“c"的类
  189. class(z) <- c("c","a","b")
  190. mymethod(z) #寻找第一个可用的泛型函数
  191. ##S3模型的限制
  192. #任意的类能分配到任意的对象上,没有完整性检验。如:
  193. class(women) <- "lm"
  194. summary(women)
  195. #S4面向对象编程的模型更加正式、严格,旨在克服由S3结构化程度低的困难
  196. #6.编写有效的代码
  197. #R的缺陷:大数据集、高重复任务,速度慢
  198. #高效技巧:①只读取需要的数据②尽量矢量化循环③创建大小正确对象,而非反复调整④并行
  199. #有效数据输入:colClasses指定变量类型
  200. read.table(data,header = T,sep = ",",colClasses = c("numeric","numeric","character",NULL,"numeric",NULL,NULL))
  201. #矢量化:使用R中的函数
  202. set.seed(1234)
  203. mymatrix <- matrix(rnorm(10000000),ncol = 10)
  204. #计算各列的和
  205. accum <- function(x){
  206. sums <- numeric(ncol(x))
  207. for (i in 1:ncol(x)) {
  208. for (j in nrow(x)) {
  209. sums[i] <- sums[i]+x[j,i]
  210. }
  211. }
  212. }
  213. system.time(accum(mymatrix))
  214. system.time(colSums(mymatrix))
  215. #大小正确的对象:
  216. x <- rnorm(1000000)
  217. y <- 0 #初始化一个值
  218. system.time(for(i in 1:length(x)) y[i] <- x[i]^2)
  219. y <- numeric(length = 1000000) #初始化100000个值
  220. head(y)
  221. system.time(for(i in 1:1000000) y[i] <- x[i]^2)
  222. system.time(y <- x^2) #直接矢量化操作
  223. #并行化:foreach和doParallel包
  224. #需重复独立执行数字密集型函数的任务(如蒙特卡洛方法、自助法等)
  225. #查看哪些函数耗时:
  226. Rprof()
  227. Rprof(NULL)
  228. summaryRprof()
  229. #7.调试
  230. args(mad) #查看参数
  231. debug(mad) #标记函数进行调试
  232. mad(1:10) #设置调试函数,ls()列出对象查看
  233. #或输入n,通过代码单步运行
  234. #输入c移出单步运行并执行当前函数剩余部分
  235. #调试会话
  236. f <- function(x,y){
  237. z <- x+y
  238. g(z)
  239. }
  240. g <- function(x){
  241. z <- round(x)
  242. h(z)
  243. }
  244. h <- function(x){
  245. set.seed(1234)
  246. z <- rnorm(x)
  247. print(z)
  248. }
  249. options(error = recover) #出现错误时打印调用的栈
  250. f(2,3)
  251. f(2,-3)
  252. #按c返回列表,0退出到R提示

R 语言实战-Part 5-1笔记的更多相关文章

  1. 《R语言实战》读书笔记--为什么要学

    本人最近在某咨询公司实习,涉及到了一些数据分析的工作,用的是R语言来处理数据.但是在应用的过程中,发现用R很不熟练,所以再打算学一遍R.曾经花一个月的时间看过一遍<R语言编程艺术>,还用R ...

  2. R语言实战(第二版)-part 1笔记

    说明: 1.本笔记对<R语言实战>一书有选择性的进行记录,仅用于个人的查漏补缺 2.将完全掌握的以及无实战需求的知识点略去 3.代码直接在Rsudio中运行学习 R语言实战(第二版) pa ...

  3. R 语言实战-Part 4 笔记

    R 语言实战(第二版) part 4 高级方法 -------------第13章 广义线性模型------------------ #前面分析了线性模型中的回归和方差分析,前提都是假设因变量服从正态 ...

  4. R 语言实战-Part 3 笔记

    R 语言实战(第二版) part 3 中级方法 -------------第8章 回归------------------ #概念:用一个或多个自变量(预测变量)来预测因变量(响应变量)的方法 #最常 ...

  5. R语言实战-Part 2笔记

    R 语言实战(第二版) part 2 基本方法 -------------第6章 基本图形------------------ #1.条形图 #一般是类别型(离散)变量 library(vcd) he ...

  6. R 语言实战-Part 5-2笔记

    R 语言实战(第二版) part 5-2 技能拓展 ----------第21章创建包-------------------------- #包是一套函数.文档和数据的合集,以一种标准的格式保存 #1 ...

  7. R入门<三>-R语言实战第4章基本数据管理摘要

    入门书籍:R语言实战 进度:1-4章 摘要: 1)实用的包 forecast:用于做时间序列预测的,有auto.arima函数 RODBC:可以用来读取excel文件.但据说R对csv格式适应更加良好 ...

  8. R语言实战(三)基本图形与基本统计分析

    本文对应<R语言实战>第6章:基本图形:第7章:基本统计分析 =============================================================== ...

  9. R语言实战(二)数据管理

    本文对应<R语言实战>第4章:基本数据管理:第5章:高级数据管理 创建新变量 #建议采用transform()函数 mydata <- transform(mydata, sumx ...

随机推荐

  1. 权限管理RBAC模型概述

    一.什么是RBAC模型 RBAC模型(Role-Based Access Control:基于角色的访问控制)模型是比较早期提出的权限实现模型,在多用户计算机时期该思想即被提出,其中以美国George ...

  2. Seata整合SpringBoot和Mybatis

    Seata整合SpringBoot和Mybatis 一.背景 二.实现功能 三.每个服务使用到的技术 1.账户服务 2.订单服务 四.服务实现 1.账户服务实现 1.引入jar包 2.项目配置 3.建 ...

  3. 「刷题」THUPC泛做

    刷了一下,写一下. T1. 天天爱射击 可以这样想. 我们二分一下每一块木板在什么时刻被击碎. 然后直接用主席树维护的话是\(O(nlog^2n)\)的. 会\(T\),而且是一分不给那种... 那么 ...

  4. C语言基础知识总结大全

    1.入门程序 #include <stdio.h> int main() { printf("Hello World!"); return 0; } 2.数据类型 数据 ...

  5. Celery Task(定时任务)及参数

    celery beat 是一个调度器:它以常规的时间间隔开启任务,任务将会在集群中的可用节点上运行. 默认情况下,入口项是从 beat_schedule 设置中获取,但是自定义的存储也可以使用,例如在 ...

  6. 进程间通信消息队列msgsnd执行:Invlid argument——万恶的经验主义

    最近在搞进程间通信,首先在我的ubuntu 14.04上写了接口和测试demo,编译和执行都OK,,代码如下: 接口文件ipcmsg.h /* ipcmsg.h */ #ifndef H_MSGIPC ...

  7. word-break leetcoder C++

    Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separa ...

  8. hdu 2473 Junk-Mail Filter(并查集)

    题意: N个邮件需要鉴别. 两种操作: 1. M X Y:X和Y是同一种邮件 2.S X:X被误判(意味着X要被它从属的那个集合"踢出去"而所有其它的邮件的关系保持不变) 问最后总 ...

  9. maven+springmvc+cxf 实现简单webservice小例子

    1.首先你需要创建一个maven项目[当然是web项目] 2.pom.xml添加以下 <properties> <cxf.version>2.2.3</cxf.versi ...

  10. PTA 7-2 邻接表创建无向图 (20分)

    PTA 7-2 邻接表创建无向图 (20分) 采用邻接表创建无向图G ,依次输出各顶点的度. 输入格式: 输入第一行中给出2个整数i(0<i≤10),j(j≥0),分别为图G的顶点数和边数. 输 ...