在实验中使用到R语言封装的工具包,涉及到R和matlab之间的一些操作。
R环境的搭建比较简单,具体的安装包可以到官网上下载,直接安装。
导入包,使用install.packages(package)
。
但是这只是讲包下载到了本地,每次要用的时候,使用library(package)
将包引入当前环境。
若要使用包中的函数,引入后使用命令行:package.function(paras)
即可调用。
获取当前路径getwd()
更改路径 setwd('F:/folder/file')
,需要注意,这里路径要用/
,和Windows的表达相反
functionA
:直接查看函数代码
functionA(paras)
:调用函数
函数自定义:
printNum<-function(num){
for(i in 1:num){
print(i)
}
}
如果函数有返回值,则可以使用一个变量来接收这个返回值,注意,R语言中不需要声明变量
calSquare<-function(x){
return x*x
}
result<-calSquare(10)
总结了一下目前用到的一些自带用法/函数,这里暂不详细描述。后续持续更新……
c()
:一个常用而好用的函数,c
表示combine
之意。可以用来创建数组:
strs<-c('a','b','c') #相当于创建了一个内容为['a','b','c']的字符串数组strs
nums<-c(12,34,56,78,90) #创建了一个数组
paste(a, 'b', c, sep='_')
:主要用于字符串拼接,参数可以是字符串,也可以是字符串变量,sep表示字符串之间的连接字符,默认是空格,如果在拼接路径时不需要连接符,可以将sep设置为''
。
mode(x)
:可用于查看变量类型
matrix()
:创建矩阵
list()
:创建列表
unlist(list)
:将List
变量展开成vector
类型
list1[i,]
:获取list1
的第i
行全部数据
list1[,j]
:获取list1
的第j
列全部数据
函数 | 用途 |
---|---|
length(obj) | 显示对象中元素/成分的数量 |
dim(obj) | 显示某个对象的维度 |
str(obj) | 显示某个对象的结构 |
class(obj) | 显示某个对象的类或类型 |
mode(obj) | 显示某个对象的模式 |
names(obj) | 显示某对象中各个成分的名称 |
c(obj1, obj2, obj3,…) | 将对象并入一个向量 |
cbind(obj1, obj2, obj3,…) | 按列合并对象 |
rbind(obj1, obj2, obj3,…) | 按行合并对象 |
object | 输出某个对象 |
head(obj) | 列出某个对象的开始部分 |
tail(obj) | 列出某个对象的最后部分 |
ls() | 显示当前的对象列表 |
rm(obj1, obj2, obj3,…) | 删除一个或者多个对象。 |
newobj <- edit(obj) | 编辑对象另存为newobj |
fix(obj) | 直接编辑对象 |
首先我们知道,matlab中的数据一般存储为.mat
格式,R语言可以导入多种格式的数据,其中就包括.mat
数据,这里只讲解R如何操作.mat
数据。
首先需要借助R.matlab
工具包。使用install.packages
来下载,在引入当前环境。
.mat
文件:filename<-file.path(filepath) #filepath:文件所在路径,不包括文件名
data<-readMat(filename) #将filename文件的内容以mat形式读出
.mat
文件:writeMat(filename, A=A) #将A变量写入filename文件的A变量
在实验中,我发现了一种通过c()
生成的长得很像List
的numeric
对象,大概的样子长这样:
result
1
这个时候,我不能像操作List
一样用索引来取,可能有更加好的方法,但是我在网上发现了一种新奇的解法:
首先先将numeric
对象转化为factor
对象:
f<-factor(obj)
再使用以下命令行:
res<-as.numeric(levels(f))
levels
函数将result
的值1取了出来,在将这个值读作numeric
对象。
[美]Robert I. Kabacoff 著,王小宁等 译 ,R语言实战(第2版) ↩︎