这篇文章用来记录我在学习使用R语言中遇到的一些区别于其他程序语言的小问题,以及一些解决方案。会持续记录下去。
1. 除法
R语言的除法运算符与其他常见语言一致:/
> 8/5
[1] 1.6
但是取余运算符为:%%
> 8%%5
[1] 3
除法运算取整除数:%/%
> 8%/%5
[1] 1
除法四舍五入:round()
round()后面再带一个参数表明保留到第几位(为正数时是指保留几位小数,为负数时是指四舍五入到第几位)
> round(8/5)
[1] 2
> round(3.141592653,2)
[1] 3.14
> round(3.141592653*100000,-2)
[1] 314200
2. list和data.frame的区别
list和data.frame是R中处理表格数据常见的两种格式,另外还有matrix。
先说matrix,它必须保证所有的数据都是同一类型的。
> b <-matrix(c(1,1,1, 2,2,3, 1,3,4, 2,1,4), ncol=3, byrow=T)
> b
[,1][,2] [,3]
[1,] 1 1 1
[2,] 2 2 3
[3,] 1 3 4
[4,] 2 1 4
> a <- matrix(c(1,1,"wo",2,2,3, 1,3,4, 2,1,4), ncol=3, byrow=T)
> a
[,1][,2] [,3]
[1,] "1" "1" "wo"
[2,] "2" "2" "3"
[3,] "1" "3" "4"
[4,] "2" "1" "4"
> mode(a)
[1] "character"
> mode(b)
[1] "numeric"
可以看到a跟b的差异就是a中有个字符类型的数据“wo”,但是打印出来后,其他数值类型数据也被转换为了字符类型。
现在来看list和data.frame的差异,它们都可以包含不同类型的数据但是也有些差异。
差异1:部分数据查看及展示方式不同。list按列展示数据,data.frame按行展示。
> list <-list(a=c("hai","tian","xiang","jie","de"),b=c("di","fang","jiu","shi","wo"),c=c("qian"
,"gua","de","gu","xiang"))
> list
$a
[1] "hai" "tian" "xiang" "jie" "de"
$b
[1] "di" "fang" "jiu" "shi" "wo"
$c
[1] "qian" "gua" "de" "gu" "xiang"
> dataframe
a b c
1 hai di qian
2 tianfang gua