R语言入门

对象的基本类型

字符

1
2
x <- "hello world"
class(x) // "chracter"

数值

1
2
x <- 2
class(x) // "numeric"

整数

1
2
x <- 2l
class(x) // "integer"

复数

1
2
x <- 1+2i
class(x) // "complex"

逻辑

1
2
x <- TRUE
class(x) // "logical"

对象的属性

名称

维度

类型

长度

向量

只能包含同一类型的对象

创建向量

1
2
3
x <- vector("character", length = 10)
x1 <- 1:4
x2 <- c(1,2,3,4)

向量的强制转换

1
2
3
4
5
6
7
x3 <- c(TRUE,10,"a") // 强制转换为 char
x4 <- c("a","b","c")
as.numeric(x4) // 输出NAs

// 其它强转函数
as.logical()
as.charater()

为向量添加名称

1
2
x1 <- c(1,2,3,4)
names(x1) <- c("a","b","c","d")

矩阵

向量+维度

1
2
3
4
5
6
7
8
// 默认是 NA,缺省值
x <- matrix(nrow = 3, ncol = 2)
// 矩阵填充
x <- matrix(1:6, nrow = 3, ncol = 2)
// 查看行和列
dim(x)
// 查看属性
attributes(x)

创建矩阵的另外一种方式

1
2
3
4
5
y<- 1:6 // 创建向量
dim(y)<- c(2,3)

// 等价于
y1<- matrix(1:6, nrow = 3, ncol = 2)

矩阵的拼接

1
2
3
4
// 按行
rbind(y,y1)
//按列
cbind(y,y1)

数组

类似矩阵,只是维度可以大于2

创建数组

1
2
x <- array(1:24, dim = c(4,6)) // 四行六列的矩阵
x <- array(1:24, dim = c(2,3,4))

列表

创建

1
x <- list("a",2,10L,2+3i,TRUE)

给列表元素命名

1
x1 <- list(a=1,b=2,c=3)

列表元素为向量

1
x2 <- list(c(1,2,3), c(4,5,6))

创建有名矩阵

1
2
x <- matrix(1:6, nrow = 2, ncol = 3)
dimnames(x) <- list(c("a","b"), c("c","d","e"))

因子

创建因子

1
2
x <- factor(c("female", "female", "male", "male", "female"), levels = c("male", "female"))
// 通过 levels
1
2
3
table(x) -- 获取因子整体信息
// female male
// 3 2
1
2
unclass(x) -- level 为属性,去掉属性
// 1 1 2 2 1

缺失值

  • NA/NAN:NAN属于NA,NA不属于NAN
  • NA有类型属性:integer NA、character NA…
  • is.na()/is.nan():判断
1
2
3
4
5
x <- c(1,NA,2,NA,3)
is.na(x)
// FALSE TRUE FALSE TRUE FALSE
is.nan(x)
// FALSE FALSE FALSE FALSE FALSE

数据框

1
2
// 按列
df <- data.frame(id = c(1,2,3,4), name = c("a","b","c","d"), gender = c(TRUE,TRUE,FALSE,FALSE))

查询行和列

1
2
nrow(df)
ncol(df)

转换矩阵

1
2
3
df2 <- data.frame(id=c(1,2,3,4), score=c(80,82,90,100))
// 和矩阵相似(同一类型)
data.matrix(df2)

日期和时间

日期

距离1970-01-01的天数

1
2
3
4
5
6
x <- date()
class(x) // "chracter"
x2 <- Sys.Date()
class(x2) // "Date"
x3 <- as.Date("2015-01-01")
class(x3) // "Date"

日期对象的函数

1
2
3
4
weekdays(x3)
months(x3)
quarters(x3)
julian(x3)

日期之间的数学运算

1
2
3
x4 <- as.Date("2016-01-01")
x4 - x3
as.numeric(x4-x3)

时间

距离1970-01-01的秒数

  • POSIXct:整数,常用于存入数据框
  • POSIXlt:列表,还包含星期、年、月、日等信息
1
2
3
4
5
6
x <- Sys.time()
class(x) // "POSIXct"
p <- as.POSIXlt(x)
class(x) // "POSIXlt"

as.POSIXct(p)
1
2
x1 <- "Jan 1, 2015 01:01"
strptime(x1, "%B %d, %Y %H:%M")
-------------要说再见啦感谢大佬的光临~-------------