您的位置:首页 > 其它

R语言学习——向量矩阵

2014-11-11 23:54 162 查看
最近开始系统学习R语言,以前也多次学习,但基本也都学学就忘记了,现在打算把每次学的东西都整理一下,防止忘记。也可以通过博客和大家交流,一起进步。现在刚开始写,所以基本都偏向于一本书,以后多读一下,加上实践,可能会有新的知识,所以我也会随时改进日志。

##-----------------------------------------------------
##R语言和基本操作
##-----------------------------------------------------
##基本运算
3 ** 2 + sqrt(4)
##赋值
x1 <- 0:10; x1
##绘制余弦曲线
x = 0: 100
y = cos(x*2*pi/100)
plot(x,y,type="l")
##-----------------------------------------------------
##R语言的向量
##-----------------------------------------------------
##常见的赋值方法
x = c(1:3, 10:13);x
x1 = c(1,2)
x2 = c(3,4)
x = c(x1,x2);x
##向量长度
x = c(12:78)
x1 = length(x); x1
##向量的运算:向量可以使用加、减、乘、除等运算,相当于对每个元素进行运算。
##乘方:**或^ 整除:%/% 求余数:%%
x = c(1,2,6.25)
y = x ** 2 + 1; y
##等长度的进行加减乘除乘方等运算是等位置的进行运算
c(1,2,3)+c(10,20,30)/c(2,4,5)
##长度不同的进行运算,长度短的会被循环使用。
c(1,2,3) + c(10,20,30,-2,-4,-9,0,0,1)
##设置输出结果的有效位数
options(digits = 7)

##高级运算
z = c(-3, -9, 8, 2, 0, -8)
##最大值和最小值
range(z)
##最大值
max(z)
##最小值
min(z)
##排序
order(z)
z[order(z)]
z[order(z,decreasing=TRUE)]
##任何值和缺失值的运算结果都是缺失值
c(1,2, NA) - c(1,NA,4)
##求和、均值、方差、标准差
sum(z)
mean(z)
var(z)
sd(z)
##如果z是矩阵,那么var(z)求得是协方差阵,如果z的长度为n=2,那么自由度为2,如果n>2,那么自由度为n-1
##-----------------------------------------------------
##R语言产生有规律的数列
##-----------------------------------------------------
##产生零向量
numeric(4)
1:5
5:1
1:5-1
1:(5-1)
##seq()的使用
seq(-2,3)
seq(from = -2, to = 3)
seq(0,1,0.1)
seq(0,by=0.2,1)
seq(by = 0.2, from = 0.1)
seq(1, length=5)
seq(length=5, to=8)
##产生向量的下标序列
w = c(4, -2, 7, 0)
seq(along=w)
##rep函数
rep(w,2)
rep(c(10,28),c(2,3))
##-----------------------------------------------------
##R语言逻辑向量
##-----------------------------------------------------
l = c(TRUE, TRUE, FALSE);l
l1 = w > 3; l1
##逻辑与:& 逻辑或:|
1<2 & 2<3
1>2 | 2<3
##all判断一个逻辑向量是否都为真
all(w>3)
##any判断一个逻辑向量是否有真值
any(w>3)
##is.na判断一个向量的元素是否缺失
is.na(c(1,2,NA))
##逻辑值可以强制转化成整数值,TRUE为1,FALSE为0
age=30
c("young","old")[(age>44)+1]
##-----------------------------------------------------
##字符型向量
##-----------------------------------------------------
cl = c("x","tan(x)","年龄"); cl
##连接字符串
paste("I", "love", "homeland")
paste(c("X","Y"),"=",1:4)
paste("result",1:5,sep=".")
paste(c("123","234"), collapse="*")
##-----------------------------------------------------
##向量下标运算
##-----------------------------------------------------
x = seq(1,8,2); x[2]
##改变元素的值
x[2] = 125; x
##取正整数值的下标向量1到length(x)
x[c(1,3)]
x[1:2]
x[c(1,3,2,1)]
c("a","b","c")[rep(c(2,1,3),3)]
##取负整数值的下标向量
x[c(-1,-3)]
##取逻辑值的下标向量
x[x>3]
x[x<(-9)]
##取字符型下标向量
ages = c(Li=33, zhang=29, Liu=18)
ages
ages["zhang"]
ages[c("zhang","Li")]
x[c(1,3)]=c(188,189); x
x[c(1,3)]=0; x
x[]=0; x
##计算一个分段函数
y = numeric(length(x))
y[x<0]=1-x[x<0]
y[x>=0]=1+x[x>=0]
x=c(-2.3, 4, -5,7); y
##把向量变成矩阵
X = t(c(1,2,3))
X = matrix(c(1,2,3,4),2,2)

R语言的向量功能很强大,也很灵活。各种输入方式都会有相应的结果,这也就要求我们要很小心,因为可能虽然没有报错,但是结果不是我们想要的。比如说长度不一样的向量相除。

        R语言是为非计算机专业设计的一门高级语言,所以在数据的类型上不像C++,Java,Python那样严格限制,数据结构也都进行了一些合并。R语言的向量可以相当于python的list和字典。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  r语言