创建矩阵对象:
#创建矩阵matrix(data = NA , nrow = 1 , ncol = 1 , byrow = FALSE , dimnames = NULL)
#byrow = FALSE表示默认按列填充,dimnames选项给行列命名。
> matrix(data = 3 , nr = 2 , nc = 2)
[,1] [,2]
[1,] 3 3
[2,] 3 3
> matrix(1:9 , 3 , 3)
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
> matrix(1:9 , 3 , 3 , byrow = TRUE)
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
[3,] 7 8 9
> #方法2:给维数赋值
> x <- 1:15
> x
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
> dim(x) <- c(3 , 5)
> x
[,1] [,2] [,3] [,4] [,5]
[1,] 1 4 7 10 13
[2,] 2 5 8 11 14
[3,] 3 6 9 12 15
>
创建数据框和列表对象:
数据框可以使用read.table()
,也可使用data.frame()
得到。
> #数据框中的向量应该有相同长度,否则,较短的那个向量将会被重复。
> x <- 1:4; n <- c(10,11);
> data.frame(x , n)
x n
1 1 10
2 2 11
3 3 10
4 4 11
> y <- 2:4
> y
[1] 2 3 4
> data.frame(x ,y )
Error in data.frame(x, y) : 参数值意味着不同的行数: 4, 3
> n <- c(10,11,12)
> data.frame(x , n)
Error in data.frame(x, n) : 参数值意味着不同的行数: 4, 3
> #猜想:如果较短的那个向量不能被整数次循环的话,会出现报错如上所示。
> ##列表
> l1 <- list(x , y)
> l1
[[1]]
[1] 1 2 3 4
[[2]]
[1] 2 3 4
> names(l1)
NULL
> l2 = list(A = x , B = y)
> l2
$A
[1] 1 2 3 4
$B
[1] 2 3 4
> names(l2)
[1] "A" "B"
>
时间序列:
由于课程《时间序列》待开课,暂时跳过这部分内容。
表达式:
所有有效命令都是表达式。
一个命令从键盘输入后,将会被求值。
而函数expression
就是使得一个表达式不被求值,之后使用eval()
对所创建的表达式求值。
> x <- 3; y <- 2; z <- 0;
> exp1 <- expression(x/(y + exp(z)));#如果没有expression函数的话,将会直接被求值
> exp1
expression(x/(y + exp(z)))
> eval(exp1)
[1] 1
#字符型变量也可以做表达式,一些函数还会将表达式看作参数,比如下面求偏导
> D(exp1 , "x")
1/(y + exp(z))
> D(exp1 , "y")
-(x/(y + exp(z))^2)
对象类型的转化:
使用函数的格式为:as.something
基本的转换规则:
此外还有:as.matrix(), as.ts, as.data.frame, as.expression,...
需要注意的是:因子转化
> fac <- factor(c(1,10))
> fac
[1] 1 10
Levels: 1 10
> as.numeric(fac)
[1] 1 2
#因子型直接转化为数值型时,不会涉及因子的水平值;
#如果希望保留水平值,需要字符型转换做中介。。如下
> as.numeric(as.character(fac))
[1] 1 10
#字符串转成数值型
> fac2 <- c("male" , "female")
> fac2
[1] "male" "female"
> as.numeric(fac2)
[1] NA NA
Warning message:
NAs introduced by coercion
> fac2 <- factor(c("male" , "female"))
> fac2
[1] male female
Levels: female male
> as.numeric(fac2)
[1] 2 1
萝卜丝皮尔
发布了106 篇原创文章 · 获赞 30 · 访问量 1万+
私信
关注