原文地址:http://javajiao.iteye.com/blog/150674

1 R的下载、安转

R有很多的版本,支持目前主流的操作系统MAC、Linux和WINDOWS系列。因为我个人是在WINDOWS下用R的,所以在这里将只介绍WINDOWS下R的下载&安装。

下载R:

你可以从世界各地很多网站上下载到R,官方的中国下载点是: 
http://www.lmbe.seu.edu.cn/CRAN/bin/windows/base/

在我写这篇文章的时候,最新的版本是R-2.2.1版。 
在网络上有一篇被翻译过来的R入门教材,可以在这里找到 :R 導論(入門)

安装R:

1,双击R-2.2.1-win32.exe文件,进入安装画面。 
2,在Welcome to the R for Windows Setup Wizard的画面中,单击NEXT。 
3,在License Agreement的画面中,选择[I accept the agreement],然后单击NEXT。 
4,在Select Destination Location的画面中,可以自行设定安装目录,默认为:[C:\Program Files\R\R-2.2.1],单击NEXT。 
5,在接下来的过程中一律选则NEXT安装即可。

2 简单的数学计算、数学函数以及如何编辑R程序

1,用R进行简单的计算:

我们可以用R进行以下各类运算。

加法      + 
减法      - 
乘法      * 
除法      / 
幂运算   ^ 
整数商   %/% 
余数      %% 
例如: 
输入:   (1 + 2 - 3 * 4) / 5^6 
结果:   [1] -0.000576

2,R中还有很多的数学函数可以使用,比如说开方函数、对数函数等等。

例如: 
输入:   sqrt(2) 
结果:[1] 1.414213

你还可以使用多个函数进行计算。例如: 
输入:   sqrt(100) + round(100) / log10(100) 
结果:[1] 60 下面介绍的是R中可以使用的数学函数。

sqrt : 开平方函数 
abs  : 绝对值函数 
exp  : 2.71828… 
expm1  : 当x的绝对值比1小很多的时候,它将能更加正确的计算exp(x)-1 
log  : 对数函数 
log10  : 对数(底为10)函数 
log2  : 对数(底为2)函数 
sin  : 正弦函数 
cos  : 余弦函数 
tan  :  正切函数 
asin  :  反正弦函数 
acos  :  反余弦函数 
atan  :  反正切函数 
sinh  :  超越正弦函数 
cosh  :  超越余弦函数 
tanh  :  超越正切函数 
asinh  :  反超越正弦函数 
acosh  :  反超越余弦函数 
atanh  :  反超越正切函数 
logb  :  和log函数一样 
log1px  :  当x的绝对值比1小很多的时候,它将能更加正确的计算log(1+x) 
gamma  :  Γ函数(伽玛函数) 
lgamma  :  等同于log(gamma(x)) 
ceiling  :  返回大于或等于所给数字表达式的最小整数 
floor  :  返回小于或等于所 给数字表达式的最大整数 
trunc  :  截取整数部分 
round  :  四舍五入 
signif(x,a)  :  数据截取函数 x:有效位 a:到a位为止 
3,R程序的输入/编辑

你可以直接在R的环境里输入R命令执行计算,也可以用任何一款文本编辑器进行编程。R程序的默认文件名后缀是[ .R ]。 
4,环境设置函数options()

用options()命令可以设置一些环境变量。

比如说:

options(digits=10) 
这个命令,可以把R的整数表示能力设为10位。

options(warn=-1) 
这个命令,可以忽视任何警告。(warn=1时,为不放过任何警告) 
……

使用help(options)可以查看详细的参数信息。

RWEKA:

WEKA是一个JAVA写的数据挖掘的工具,RWEKA则是在R中调用WEKA的一个界面。

扩展包说明&下载地址(英文):http://cran.r-project.org/src/contrib/Descriptions/RWeka.html

3、R的数据类型

R中包含以下的基本数据类型。

空值(NULL) 
意义  :该对象里什么都没有(甚至连0也没有)

欠损值、不定值(NA),非数(NaN),无限大(Inf) 
意义  :NA:表示数据缺损;NaN:表示用数字无法表示;Inf:无限大

复数(complex) 
意义  :复数

字符串(character) 
意义  :不是单一的字符,而是用双/单引号括起来的字符

逻辑值(logical) 
意义  :T表示真,F表示假

4_关于R的一些基本知识

首先看一下这一次要讲的内容。

在用R进行数据分析和计算的时候,将会用到很多变量、函数、数组等等。而对象则是对所有这些变量、函数、数组等的总称。比如说,下面这个式子:x <- 2通常我们会说,x是一个变量,我们通过赋值运算把它的值设为2。但是在R里,不论我们是给一个变量赋值也好,还是对一个数组进行初始化也好,我们统统把它称为[对象]。

什么是对象(Object) 
如何改变工作目录 
关于扩展包(库函数) 
R的数据类型 
环境设置函数options() 
接下来,我们一个一个的简单介绍。

1,什么是对象(Object)

在用R进行数据分析和计算的时候,将会用到很多变量、函数、数组等等。而对象则是对所有这些变量、函数、数组等的总称。 
比如说,下面这个式子: 
x <- 2

下面的对象是R的预设对象。我们在命名自己的对象时,是不能与下面这些对象重名的。

break 
else 
for 
function 
if 
TRUE 
in 
next 
repeat 
return 
while 
FALSE

另外: 
使用objects()函数,还可以查看目前存在的对象名。 
使用rm()函数,可以消除自己所定义过的对象。( 例如: rm(killme) ) 
使用rm(list=ls(all=TRUE))命令,可以消除自己所定义过的所有的对象。 
命名对象时,要注意大小写。(例如:x和X是两个不同的对象)

2、如何改变工作目录

你可以用getwd()命令来查看当前目录,也可以用类似setwd(”c:/usr”)的命令来更改当前的目录。

你还可以用dir()命令来查看当前目录里的文件。(好像回到了dos时代…呵呵)

3、关于扩展包(库函数)

R有很好的扩展性能,默认下R自带了以下的扩展包。

base:R的基本扩展包 
boot:R的启动函数库 
class:Classification的函数库 
cluster:进行聚类分析计算的函数库 
foreign:读取其它的统计软件(如:SAS…)等生成的文件的函数库 
grid:grid图像函数库 
KernSmooth:进行核函数密度估计运算的函数库 
lattice:lattice图像函数库 
MASS:在『Modern Applied Statistics with S』中出现的数据与函数库 
methods:定义了在R中用于对象的各种方法、类、程序以及工具。 
mgcv:GCV和一般加法模型GAM(generalized additive model)的函数库 
nlme:线性混合效果模型和非线性混合效果模型的函数库 
nnet: 
rpart:使用了再归算法的分类和回归树的函数库 
spatial: 
splines:splines回归的函数库 
stats:R的统计函数库 
stats4:S4类的统计函数库 
survival: 
tcltk:Tcl/Tk的接口函数库 
tools:用于扩展包开发和管理的函数库 
utils:

另外: 
使用library(help=”扩展包名”)命令可以查看该扩展包的详细信息 
使用library(扩展包名)命令可以使用该扩展包 
使用search()命令可以查看现在已经读取的扩展包 
使用detach(”package:扩展包名”)命令可以卸载某个扩展包 
使用data()命令可以查看当前可使用的数据对象 
使用data(package = “扩展包名”)命令可以查看在该扩展包中的数据对象

扩展包的安装: 
使用下面的命令,可以联网安装扩展包。 
options(CRAN=”http://cran.r-project.org”) 
install.packages(”扩展包名”)

如果你已经下载了扩展包的ZIP压缩文件,你可以用下面的命令指定路径安装扩展包。 
install.packages(”路径名/文件名.zip”, contriburl = NULL) 
例如:install.packages(”c:/adapt_1.0-4.zip”, contriburl = NULL)

当然,你也可以通过菜单操作下载和安装扩展包,请自己研究。

5_用R进行基本的统计计算

今天简单的讲一下如何用R进行基本的统计计算。

定义: 
数据有很多种分类方法,在这里,为了方便理解,暂时把年龄、身高、体重等用数字表示的数据叫做数量型数据;相对的,把血型、性别、职称等用文字叙述的数据叫做质量型数据。

在这里所说的基本的统计计算,是指对各类数量型数据进行求和、平均、求最大值最小值等等的计算。

●和与百分比

A:和

在对数量型数据进行分析计算时,求和是经常会使用到的。

比如说,有五位同学,他们的身高分别是: 
1.75米 、 1.82米 、 1.78米 、 1.93米 、 1.77米 
求他们的身高的总和。

和 = 1.75+1.82+1.78+1.93+1.77 = 9.05米

用R进行求和计算时,你可以按照下面的方式进行计算

> 1.75+1.82+1.78+1.93+1.77 
[1] 9.05

也可以利用R本身的sum()函数,这样的话,会更加便捷。

> shengao <- c(1.75,1.82,1.78,1.93,1.77) 
> sum(shengao) 
[1] 9.05

B:百分比

还是刚才那5位同学,他们的体重分别是: 
69公斤 , 80公斤 , 78公斤 , 96公斤 , 65公斤 
他们的总体重为:

  1. > tizhong <- c(69,80,78,96,65)
  2. > sum(tizhong)
  3. [1] 388

388公斤。

那么,第一位同学占总体重的多少呢?

按比例计算:

  1. > tizhong/sum(tizhong)
  2. [1] 0.1778351 0.2061856 0.2010309 0.2474227 0.1675258

按百分比计算:

  1. > 100*(tizhong/sum(tizhong))
  2. [1] 17.78351 20.61856 20.10309 24.74227 16.75258

使用扩展包sca中的percent函数,可以用带%符号的表示方式显示结果。

  1. > library(sca)
  2. > percent(tizhong/sum(tizhong))
  3. [1] “18 %” “21 %” “20 %” “25 %” “17 %”

还可以用参数d来指定小数点后的表示位数。在不指定的情况下,小数点后的数字不表示。

  1. > percent(tizhong/sum(tizhong),d=1)
  2. [1] “17.8 %” “20.6 %” “20.1 %” “24.7 %” “16.8 %”

如果不想结果被双引号包围,可以用noquote命令

  1. > noquote(percent(tizhong/sum(tizhong),d=1))
  2. [1] 17.8 % 20.6 % 20.1 % 24.7 % 16.8 %

●表示中心的统计量 
表示数据中心位置的统计量有很多种,最基本的有:平均值、最频值。

A:平均值

上面那五位同学的年龄分别为: 
19岁 、 21岁 、 20岁 、 26岁 、 17岁 
在求这五位同学的年龄的平均值时,可以用下面这种方法:

  1. > (19+21+20+26+17)/5
  2. [1] 20.6

也可以用R自带的mean()函数:

  1. > nianling <- c(19,21,20,26,17)
  2. > mean(nianling)
  3. [1] 20.6

B:最频值

在数据中最频繁出现的数值叫做最频值。

我们先用其他的函数来间接的求最频值。 
例如:我们在求下面这组数据的最频值时,可以使用table函数。

  1. 1 , 7 , 3 , 7 , 8 , 23 , 5 , 7 , 9 , 3 , 4
  2. > table(c(1 , 7 , 3 , 7 , 8 , 23 , 5 , 7 , 9 , 3 , 4))
  3. 1  3  4  5  7  8  9 23
  4. 1  2  1  1  3  1  1  1

从返回的结果中我们可以清楚地看到,在数据中 “7” 出现了3次,因此 “7” 为该组数据的最频值。

接着,我们直接用函数median()来求最频值。

  1. > median(c(1 , 7 , 3 , 7 , 8 , 23 , 5 , 7 , 9 , 3 , 4))
  2. [1] 7

●表示分散的统计量 
表示数据中心的统计量虽然很重要,但是表示数据四周的分散信息的统计量也十分的重要。

A:最大值、最小值和范围

我们用tizhong数据,分别计算五位同学体重的最大值、最小值和体重的分布范围。

最大值

  1. > max(tizhong)
  2. [/1] 96
  3. <pre name="code" class="java">最小值
  4. <pre name="code" class="java">> min(tizhong)
  5. [1] 65
  6. </pre>
  7. <br>范围
  8. <br><pre name="code" class="java">> range(tizhong)
  9. [1] 65 96
  10. </pre>
  11. <br>
  12. <br>B:方差和标准偏差(variance AND standard deviation)
  13. <br>
  14. <br>在R中,有很方便的求方差和标准偏差的函数var()和sd()。
  15. <br>
  16. <br>例如在求tizhong数据的方差和标准偏差时,可以如下计算。
  17. <br>方差:
  18. <br><pre name="code" class="java">> var(tizhong)
  19. [1] 144.3
  20. </pre>
  21. <br>标准偏差:
  22. <br><pre name="code" class="java">> sd(tizhong)
  23. [1] 12.01249
  24. </pre>
  25. <br>C:四分位数
  26. <br>
  27. <br>四分位数是指把样本数据按从小到大的顺序等分成四份,各等分点上的数即为四分位数。
  28. <br>例如:数据
  29. <br>
  30. <br>3(0%点)  5  6(25%点)  8  9(50%点)  11  12(75%点)  15  16(100%点)
  31. <br>
  32. <br>25%点的6和75点的12分别称为下四分位数和上四分位数。
  33. <br>
  34. <br>上四分位数与下四分数之差叫做四分位间距。
  35. <br>
  36. <br>在R中我们可以用quantile()函数和IQR()函数来求四分位数和四分位间距。
  37. <br><pre name="code" class="java">> sifenshu <- c(3,5,6,8,9,11,12,15,16)
  38. > quantile(sifenshu)
  39. 0%  25%  50%  75% 100%
  40. 3    6    9   12   16
  41. > IQR(sifenshu)
  42. [1] 6
  43. </pre>
  44. <br>
  45. <br>今天简单介绍了一下如何用R对一些基本的统计量进行计算,如果有其它的要求的,欢迎提出来,我会进一步介绍的。今天就先到这里了,呵呵。
  46. <br>
  47. <br>
  48. <br>6_R的函数
  49. <br>
  50. <br>R中有很多的标准自带的函数,也有很多的由扩展包支持的函数。今天我们主要看一看R中标准自带的函数。
  51. <br>
  52. <br>首先简单定义一下什么是函数:
  53. <br>
  54. <br>在R中,所谓函数实际上就是一系列程序的组合。
  55. <br>
  56. <br>为了能够更深刻的理解这句话,我将在下面这个例子中先一步一步的计算几个数的平均值;再讲如何把这些可以重复利用的运算步骤改写成为自己服务的函数;最后,我们再看一下R中已经为我们准备好了的求平均值的函数的用法:
  57. <br>
  58. <br><pre name="code" class="java">1,一段程序
  59. 我们用R计算下面这5个数的和
  60. 23  34  56  78  89
  61. 在R中,我们刚开始可能会这样写:
  62. >x <- c( 23, 34, 56, 78, 89 )
  63. >z <- 0
  64. >for( i in 1:5 ){
  65. >z <- z + x[i]
  66. >}
  67. >z <- z/5
  68. >z
  69. [1]56
  70. </pre>
  71. <br>经过我们一步一步的计算,得到了最后的结果56。
  72. <br>
  73. <br>但如果每次遇到类似这样的求平均的运算,我们都这样的用手去一步一步的输入的话,好像很麻烦,呵呵,还好,R可以帮助我们这些懒人,用函数的方式来解决这个问题。
  74. <br>
  75. <br>2,一段程序变函数
  76. <br>我们所想要的是,只要输入数据就可以自动的帮我们算出平均值的结果。下面我们来看看怎样在R中写一个自己的函数。
  77. <br>
  78. <br><pre name="code" class="java">> mymean <- function(x){
  79. + y <- 0
  80. + for(i in 1:length(x)){
  81. + y <- y+ x[i]
  82. + }
  83. + y <- y/length(x)
  84. + }
  85. </pre>
  86. <br>现在,属于我们自己的求平均函数mymean()就完成了,我们可以用下面这段程序来检查一下看有没有什么错误。
  87. <br>
  88. <br><pre name="code" class="java">>x <- c( 23, 34, 56, 78, 89 )
  89. >y <- mymean(x)
  90. >y
  91. [1]56
  92. </pre>
  93. <br>呵呵,结果一致。 我们以后就可以用这个自己制作的函数来计算其他的各种求平均运算了。
  94. <br>
  95. <br>3,利用R自带的函数
  96. <br>其实像求平均、求和、最大值、最小值甚至自然指数、平方根等运算在R中都已经有自带的函数。比如R中自带的求平均函数:mean()
  97. <br><pre name="code" class="java">
  98. >x <- c( 23, 34, 56, 78, 89 )
  99. >y <- mean(x)
  100. >y
  101. [1]56
  102. </pre>
  103. <br>
  104. <br>使用方法和我们自己写的函数的使用方法是一样的。
  105. <br>
  106. <br>好,我们到现在为止就大概的看了看函数的定义,如何制作自己的函数以及如何使用R中自带的函数。
  107. <br>
  108. <br>接下来,我就把R中自带的函数列一个简表,以方便大家查询。(这里并不是全部,只是个人认为比较常用的,希望对初学者有所帮助。……也许以后会慢慢更新、补全,呵呵……)
  109. <br>
  110. <br>基本统计量:
  111. <br>
  112. <br>mean
  113. <br>求平均值
  114. <br>
  115. <br>max
  116. <br> 求最大值
  117. <br>
  118. <br>min
  119. <br> 求最小值
  120. <br>
  121. <br>range
  122. <br> 求范围(最大值-最小值)
  123. <br>
  124. <br>median
  125. <br> 求中央值
  126. <br>
  127. <br>var
  128. <br> 求分散
  129. <br>
  130. <br>
  131. <br>数据操作:
  132. <br>
  133. <br>matrix
  134. <br> 建立行列式
  135. <br>
  136. <br>list
  137. <br> 建立列表
  138. <br>
  139. <br>is.*****
  140. <br>
  141. <br>****是数据的类型名
  142. <br>例如:
  143. <br> is.matrix(x)语句的意思是问R:“x是不是行列式?”。
  144. <br> 如果x是行列式的话R将返回”TRUE”,如果不是R将返回”FALSE”
  145. <br>
  146. <br>as.****
  147. <br>****是数据的类型名
  148. <br> as.matrix(x)的作用是不管x以前是什么类型的,R都要用这条语句来把x转换成行列式。
  149. <br>
  150. <br>nrow
  151. <br> 返回对象的行数:nrow(x)
  152. <br>
  153. <br>ncol
  154. <br> 返回对象的列数:ncol(x)
  155. <br>
  156. <br>length
  157. <br> 返回对象的长度
  158. <br>
  159. <br>colnames
  160. <br> 返回列名
  161. <br>
  162. <br>rownames
  163. <br> 返回行名
  164. <br>
  165. <br>
  166. <br>简单计算:
  167. <br>
  168. <br>abs
  169. <br> 计算绝对值
  170. <br> abs(-2)
  171. <br>
  172. <br>exp
  173. <br> 求自然指数
  174. <br> exp(1)=2.7182…
  175. <br>
  176. <br>sqrt
  177. <br> 求平方根
  178. <br> sort(4)
  179. <br>
  180. <br>log
  181. <br> 求自然对数
  182. <br> log(exp(1))=1
  183. <br>
  184. <br>log10
  185. <br> 常用对数
  186. <br> log10(10)=1
  187. <br>
  188. <br>cos,sin,tan
  189. <br> 三角函数
  190. <br>
  191. <br>acos,asin,atan
  192. <br> 逆三角函数
  193. <br>
  194. <br>round
  195. <br> 四舍五入
  196. <br> round(3.1415 , 3)= 3.142
  197. <br>
  198. <br>
  199. <br>
  200. <br>
  201. <br>
  202. <br>关于R的一些网站:
  203. <br>
  204. <br>中文:.
  205. <br>中国统计论坛 - R语言与SPLUS: http://www.8sta.com/bbs/Archive_index.asp?BoardID=38&BoardType=R语言与SPLUS
  206. <br>
  207. <br>英文:
  208. <br>R Project(R的官方网站):http://www.r-project.org/
  209. <br>
  210. <br>日文:
  211. <br>日本的R大本营:http://www.okada.jp.org/RWiki/
  212. <br>R-TIPS(日文教程):http://cse.naro.affrc.go.jp/takezawa/r-tips/r2.html
  213. <br>用R进行统计处理:http://aoki2.si.gunma-u.ac.jp/R/
  214. <br>
  215. <br>
  216. </pre>

闲人博上介绍R语言的一篇好文章相关推荐

  1. R语言数据处理——基础篇 data.frame基本操作

    文章目录 R语言数据处理--基础篇 data.frame基本操作 data.frame的创建 数据访问.条件筛选与删除 数据访问 数据筛选 删除 使用`gather()`进行data.frame数据格 ...

  2. R语言绘图——实用篇 ggplot2绘图

    文章目录 R语言绘图--实用篇 ggplot2绘图 绘制等值线图相关 如何绘制等值线图 插值,平滑插值 插值,缺失值插值 色条(色阶)划分 图例的色条(色阶)修改,合理的参数值选用 图例的色条(色阶) ...

  3. R语言中文社区2018年终文章整理(作者篇)

    欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答.求职一站式搞定! 对商业智能BI.大数据分析挖掘.机器学习,python,R等数据领域感兴趣的同学 ...

  4. Mac上安装R语言运行环境及RStudio [超详细!~]

    前言 我们需要安装:1)R语言环境,2)Rstudio软件(R语言开发工具). 我的安装方法参考了博文mac上安装R和RStudio,感谢作者. 接下来分步骤展示详细方法,并给出一个运行示例~ Ste ...

  5. ubuntu安装java依赖,在Ubuntu 16上安装R语言 - 未满足的依赖项

    按照站点[here]上的说明安装R语言 . 在安装过程中,我使用apt-get install命令在r-base组件上收到错误" unmet dependencies " . 请参 ...

  6. SIR传染病模型介绍+R语言简单应用

    此文用于整理回顾写论文时看的文献资料和学到的知识,也希望能带来一些参考. 什么是SIR模型? 1927年,Kermack 和 McKendrick 为了研究17世纪肆虐伦敦的黑死病和20世纪席卷孟买的 ...

  7. R语言学习-基础篇1

    ###第一周:R基础 rm(list = ls())  #ctr+L ###矩阵相乘,函数diag() a=matrix(1:12,nrow=3,ncol=4) b=matrix(1:12,nrow= ...

  8. R语言语句练习篇(一)

    1.按照下列要求操作: (1)定义一个POSIXlt 类型的时间变量 R语言作业提交截止时间: DDL:"2019-08-01 23:59:59" (2)显示POSIXlt 列表中 ...

  9. c语言对一篇英文文章进行统计,C语言统计一篇英文短文中单词的个数实例代码...

    具体代码如下所述: #include #define N 1000 void main(){ char en[N][81]; int i,j,num=0,n,state; //num 用来统计单词的个 ...

  10. 云服务器上安装 R语言 以及 RStudio Server 详细图文操作(全)

    目录 前言 1. 更换镜像源 2. 安装R 2.1 R包版本(最新) 3. 安装RStudio Server 4. 后续细节 4.1 关闭防火墙 4.2 入口规则(端口) 4.3 增加用户 5. 验证 ...

最新文章

  1. error40无法打开到sql_SQL入门学习,初步认识ADO
  2. PHP中使用cURL实现Get和Post请求的方法
  3. Linux内存(手动释放cache)
  4. Android开发之通过WebView查看HTML源码的方法
  5. 选择日期保存报错Invalid JSON input: Cannot deserialize value of type `java.util.Date` from String......
  6. 通用汽车研发中心最新提出:3D车道线检测新方法
  7. python是什么意思中文、好学吗-爬虫Python入门好学吗?学什么?
  8. 前端商城vue项目案例1
  9. 高级文本编辑器——Kate
  10. QTP基础教程(讲义)《软件测试技术》
  11. 【现代信号处理】 15 - 谱分析基础和周期图谱分析
  12. 酷的计算机名字,微信网名最酷的名字
  13. 室内可见光定位matlab代码,visible-led-communication 这里给出了几个可见光通信的MATLAB程序...
  14. Sumatra PDF
  15. 2023跨境出海指南:韩国网红营销白皮书
  16. 看完这篇,你一定会打开谷歌搜索...
  17. 企业专线传输网络与普通宽带的对比
  18. 初识java——Java语言简介
  19. 【3DSmax】3DSmax9基础建模教程—读书笔记2(第二课)
  20. 计算机考研寒假可以做什么,计算机考研寒假复习攻略,边玩边学!

热门文章

  1. 题目 2322: 大鱼吃小鱼
  2. Android wps自定义功能,完美兼容安卓4.2新增多项功能 WPS移动版升级至5.2
  3. VMware安装win10 win2012(最详细最全操作)
  4. android如何替换contact的来电铃声
  5. 工作室多拨宽带如何优化?
  6. JQuery读书笔记---很全面的教程
  7. c语言中变量属性,C语言学习笔记--C语言中变量的属性关键字
  8. [CF106C]Buns
  9. 通用技术金工工艺高考必考必看的知识点含攻丝与套丝讲解
  10. ssh-keygen 常用命令与参数