美文网首页程序员
学习R语言(一)

学习R语言(一)

作者: WilliamY | 来源:发表于2018-06-12 17:15 被阅读71次

装好R后进入R环境:

sudo R

0.安装

sudo apt-get update
sudo apt-get install r-base

1.向量

R语言没有标量,只有向量。如数字1,R中存储为c(1)

赋值

> a <- c(1,2,3)
> a
[1] 1 2 3

筛选

R语言下标从1开始,结束的下标包含在筛选范围内。注意,只写一个:不能选择全部元素。这和python不同。

> a[1:2]
[1] 1 2

条件筛选也是可以的:

> a[a>2]
[1] 3

条件判断是逐个进行(element-wise)的:

> a > 2
[1] FALSE FALSE  TRUE

合并

c()可以合并向量。

> c(a[1], 5, a[2], a[3], 6:10)
[1]  1  5  2  3  6  7  8  9 10

(循环)补齐

两个向量运算,长度不同时,较短的一个自动补齐到较长的向量的长度,方式是从较短向量的开头依次填补。若仍不够长,则循环上述过程。

> a <- c(30, 40)
> b <- c(1:10)
> a + b
 [1] 31 42 33 44 35 46 37 48 39 50

2.矩阵

赋值

> a <- matrix(c(1:8), nrow=2)
> a
     [,1] [,2] [,3] [,4]
[1,]    1    3    5    7
[2,]    2    4    6    8

如果想要按行排列元素,则可以设置byrow=TRUE(注意true全部是大写):

> a <- matrix(c(1:8), nrow=2, byrow=TRUE)
> a
     [,1] [,2] [,3] [,4]
[1,]    1    2    3    4
[2,]    5    6    7    8

筛选

用行号和列号筛选。注意用的是中括号,和python是一样的。

> a[1:2, 3:4]
     [,1] [,2]
[1,]    3    4
[2,]    7    8

如果要选择某一整行(列),就空着列(行)号。

> a <- matrix(1:4, nrow=2)
> a
     [,1] [,2]
[1,]    1    3
[2,]    2    4
> a[2, ]
[1] 2 4
> a[, 1]
[1] 1 2

线性代数

如果不加是区别的*号,表示的是元素乘。

> a * a
     [,1] [,2] [,3] [,4]
[1,]    1    4    9   16
[2,]   25   36   49   64

如果要表示矩阵乘法,则需用%*%来表示

> b <- t(a)
> a %*% b
     [,1] [,2]
[1,]   30   70
[2,]   70  174

这里t()表示矩阵的转置。
要表示逆,则用solve()

> d = matrix(1:4, nrow=2)
> solve(d)
     [,1] [,2]
[1,]   -2  1.5
[2,]    1 -0.5
> d %*% solve(d)
     [,1] [,2]
[1,]    1    0
[2,]    0    1

3.数据框

数据框类似于矩阵,但数据框可以包含多种数据类型。【我个人感觉dataframe翻译成数据框很奇怪。约定俗成吧。】

> data('iris')
> head(iris)
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa
> summary(iris)
  Sepal.Length    Sepal.Width     Petal.Length    Petal.Width   
 Min.   :4.300   Min.   :2.000   Min.   :1.000   Min.   :0.100  
 1st Qu.:5.100   1st Qu.:2.800   1st Qu.:1.600   1st Qu.:0.300  
 Median :5.800   Median :3.000   Median :4.350   Median :1.300  
 Mean   :5.843   Mean   :3.057   Mean   :3.758   Mean   :1.199  
 3rd Qu.:6.400   3rd Qu.:3.300   3rd Qu.:5.100   3rd Qu.:1.800  
 Max.   :7.900   Max.   :4.400   Max.   :6.900   Max.   :2.500  
       Species  
 setosa    :50  
 versicolor:50  
 virginica :50  
> names(iris)
[1] "Sepal.Length" "Sepal.Width"  "Petal.Length" "Petal.Width"  "Species"   

data()函数调入数据集。这里不需要赋值给任何变量。
head()可以查看前几行。
summary()可以查看表格各列的统计值。
names()可以获取列名。

筛选

可以通过行列号,也可以通过列名,来筛选元素。也可以混合使用。

> iris$Species
  [1] setosa     setosa     setosa     setosa     setosa     setosa    
  [7] setosa     setosa     setosa     setosa     setosa     setosa    
 [13] setosa     setosa     setosa     setosa     setosa     setosa    
 [19] setosa     setosa     setosa     setosa     setosa     setosa    
 [25] setosa     setosa     setosa     setosa     setosa     setosa    
 [31] setosa     setosa     setosa     setosa     setosa     setosa    
 [37] setosa     setosa     setosa     setosa     setosa     setosa    
 [43] setosa     setosa     setosa     setosa     setosa     setosa    
 [49] setosa     setosa     versicolor versicolor versicolor versicolor
 [55] versicolor versicolor versicolor versicolor versicolor versicolor
 [61] versicolor versicolor versicolor versicolor versicolor versicolor
 [67] versicolor versicolor versicolor versicolor versicolor versicolor
 [73] versicolor versicolor versicolor versicolor versicolor versicolor
 [79] versicolor versicolor versicolor versicolor versicolor versicolor
 [85] versicolor versicolor versicolor versicolor versicolor versicolor
 [91] versicolor versicolor versicolor versicolor versicolor versicolor
 [97] versicolor versicolor versicolor versicolor virginica  virginica 
[103] virginica  virginica  virginica  virginica  virginica  virginica 
[109] virginica  virginica  virginica  virginica  virginica  virginica 
[115] virginica  virginica  virginica  virginica  virginica  virginica 
[121] virginica  virginica  virginica  virginica  virginica  virginica 
[127] virginica  virginica  virginica  virginica  virginica  virginica 
[133] virginica  virginica  virginica  virginica  virginica  virginica 
[139] virginica  virginica  virginica  virginica  virginica  virginica 
[145] virginica  virginica  virginica  virginica  virginica  virginica 
Levels: setosa versicolor virginica
> iris[20, ]
   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
20          5.1         3.8          1.5         0.3  setosa
> iris[3, ]$Species
[1] setosa
Levels: setosa versicolor virginica
> iris$Patal.Length
NULL
> iris$Petal.Length
  [1] 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 1.5 1.6 1.4 1.1 1.2 1.5 1.3 1.4
 [19] 1.7 1.5 1.7 1.5 1.0 1.7 1.9 1.6 1.6 1.5 1.4 1.6 1.6 1.5 1.5 1.4 1.5 1.2
 [37] 1.3 1.4 1.3 1.5 1.3 1.3 1.3 1.6 1.9 1.4 1.6 1.4 1.5 1.4 4.7 4.5 4.9 4.0
 [55] 4.6 4.5 4.7 3.3 4.6 3.9 3.5 4.2 4.0 4.7 3.6 4.4 4.5 4.1 4.5 3.9 4.8 4.0
 [73] 4.9 4.7 4.3 4.4 4.8 5.0 4.5 3.5 3.8 3.7 3.9 5.1 4.5 4.5 4.7 4.4 4.1 4.0
 [91] 4.4 4.6 4.0 3.3 4.2 4.2 4.2 4.3 3.0 4.1 6.0 5.1 5.9 5.6 5.8 6.6 4.5 6.3
[109] 5.8 6.1 5.1 5.3 5.5 5.0 5.1 5.3 5.5 6.7 6.9 5.0 5.7 4.9 6.7 4.9 5.7 6.0
[127] 4.8 4.9 5.6 5.8 6.1 6.4 5.6 5.1 5.6 6.1 5.6 5.5 4.8 5.4 5.6 5.1 5.1 5.9
[145] 5.7 5.2 5.0 5.2 5.4 5.1
> iris$Petal.Length[20, ]
Error in iris$Petal.Length[20, ] : incorrect number of dimensions
> iris$Petal.Length[20]
[1] 1.5

还可以用[[num]]表示第num个属性

> iris[[2]]
  [1] 3.5 3.0 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 3.7 3.4 3.0 3.0 4.0 4.4 3.9 3.5
 [19] 3.8 3.8 3.4 3.7 3.6 3.3 3.4 3.0 3.4 3.5 3.4 3.2 3.1 3.4 4.1 4.2 3.1 3.2
 [37] 3.5 3.6 3.0 3.4 3.5 2.3 3.2 3.5 3.8 3.0 3.8 3.2 3.7 3.3 3.2 3.2 3.1 2.3
 [55] 2.8 2.8 3.3 2.4 2.9 2.7 2.0 3.0 2.2 2.9 2.9 3.1 3.0 2.7 2.2 2.5 3.2 2.8
 [73] 2.5 2.8 2.9 3.0 2.8 3.0 2.9 2.6 2.4 2.4 2.7 2.7 3.0 3.4 3.1 2.3 3.0 2.5
 [91] 2.6 3.0 2.6 2.3 2.7 3.0 2.9 2.9 2.5 2.8 3.3 2.7 3.0 2.9 3.0 3.0 2.5 2.9
[109] 2.5 3.6 3.2 2.7 3.0 2.5 2.8 3.2 3.0 3.8 2.6 2.2 3.2 2.8 2.8 2.7 3.3 3.2
[127] 2.8 3.0 2.8 3.0 2.8 3.8 2.8 2.8 2.6 3.0 3.4 3.1 3.0 3.1 3.1 3.1 2.7 3.2
[145] 3.3 3.0 2.5 3.0 3.4 3.0

也可以进行有条件筛选。

> iris[iris$Petal.Length>6., ]
    Sepal.Length Sepal.Width Petal.Length Petal.Width   Species
106          7.6         3.0          6.6         2.1 virginica
108          7.3         2.9          6.3         1.8 virginica
110          7.2         3.6          6.1         2.5 virginica
118          7.7         3.8          6.7         2.2 virginica
119          7.7         2.6          6.9         2.3 virginica
123          7.7         2.8          6.7         2.0 virginica
131          7.4         2.8          6.1         1.9 virginica
132          7.9         3.8          6.4         2.0 virginica
136          7.7         3.0          6.1         2.3 virginica

注意逗号不可以省掉。

排序

order()函数排序。如:

> head(iris[order(iris[[3]]), ])
   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
23          4.6         3.6          1.0         0.2  setosa
14          4.3         3.0          1.1         0.1  setosa
15          5.8         4.0          1.2         0.2  setosa
36          5.0         3.2          1.2         0.2  setosa
3           4.7         3.2          1.3         0.2  setosa
17          5.4         3.9          1.3         0.4  setosa
> head(iris[order(iris[,2]), ])
    Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
61           5.0         2.0          3.5         1.0 versicolor
63           6.0         2.2          4.0         1.0 versicolor
69           6.2         2.2          4.5         1.5 versicolor
120          6.0         2.2          5.0         1.5  virginica
42           4.5         2.3          1.3         0.3     setosa
54           5.5         2.3          4.0         1.3 versicolor

根据第2列排序后,输出第1,3列:

> head(iris[order(iris[,2]), ][, c(1, 3)])
    Sepal.Length Petal.Length
61           5.0          3.5
63           6.0          4.0
69           6.2          4.5
120          6.0          5.0
42           4.5          1.3
54           5.5          4.0

4.列表

> l <- list(name='helloworld', ohmygod=2, youaregoodgood=TRUE)
> l
$name
[1] "helloworld"

$ohmygod
[1] 2

$youaregoodgood
[1] TRUE

里面的属性随便填。
筛选和数据框一样。

> l$youaregoodgood
[1] TRUE
> l[[3]]
[1] TRUE
> l[[1]]
[1] "helloworld"

相关文章

  • day5 阿来

    继续学习R语言 R语言数据学习 数据R语言学习.png 数据输入 数据输出 总结 R语言学习的第二天,熟悉了很多操...

  • R语言-0基础学习4-实战1-常见操作

    R语言学习系列R语言-0基础学习1-数据结构R语言-0基础学习2-构建子集R语言-0基础学习3-循环排序信息处理函...

  • Day4 学习小组--张小张

    今天是 R 语言基础的学习 了解R与Rstudio R 语言是一款统计软件; R 语言也是一门编程语言,语言也是一...

  • 学习小组Day4笔记--行

    正式开始学习R语言了,今天笔记内容为R语言基础和ggplot2的入门学习 R语言基础 1、认识R与RStudio ...

  • 生信学习小组Day5笔记-lamyusam_

    R语言学习 今天,了解了R中的数据类型,初步学习R语言的数据结构。 R的数据类型 向量(vector) R语言中的...

  • R 语言--日期值的输入

    学习R语言,很多人都推荐使用图灵程序设计丛书中的"R in Action"-《R语言实战》作为R语言学习的入门书籍...

  • 学习R语言(一)

    装好R后进入R环境: 0.安装 1.向量 R语言没有标量,只有向量。如数字1,R中存储为c(1) 赋值 筛选 R语...

  • 《学习小组Day4笔记--寒鹤》

    R语言基础 今天的课程内容是R语言基础,包括R及Rstudio的安装,R语言的一些基本操作等。因之前已学习过R语言...

  • Day4-蒙蒙帮主-初尝R语言,有酸也有甜~

    今天的学习任务是R语言!今天的学习任务是R语言!今天的学习任务是R语言!OK?开始!嗯,大蒙蒙的原则,当我实在不想...

  • 学习小组Day4笔记--扬马延

    R语言学习 1. R以及R studio安装 直接搜索R语言网页可直接安装 2. R语言入门 参考书目《R for...

网友评论

本文标题:学习R语言(一)

本文链接:https://www.haomeiwen.com/subject/hbgwlftx.html