仅用于记录R语言学习过程:
内容提要:
自定义函数:function()函数,缺省参数(...)
数据的读取:文本,excel,SPSS,SAS,STATA格式;
主要的函数有:read.csv()、read.table()、readxl包中的read_excel()函数、XLConnect包中的readWorksheetFromfile()、foreign包中的read.xx()、stringi包中的stri_read_lines()
数据的写出和导出:文本,excel,SPSS,SAS,STATA格式;
主要的函数有:scan()、cat()、write.csv()、writeLines()
正文:
自定义函数和数据的读取
n 函数的用法可通过右下角的help-输入函数名进行查找学习使用
n 自定义函数:自己编写一个需要用的函数
u 示例:
> my_fun1 <- function(x,y) {
x+y
}
> my_fun1(3,4)
[1] 7
my_fun2 <- function(x,y=2) {
+ x+y
+ }
>
> my_fun2(2,4)
[1] 6
注:即使y已经给了一个固定值,也是可以更改的,也可以只传入一个值,如my_fun2(1)
关于缺省参数,用‘...’表示,代表着有多个参数但是并没有完全写出来,在调用时可根据需要赋值,举例:
value <- c(sqrt(1:100))
my_fun3 <- function(x,...) {
print(x)
summary(...)
}
此处省略了summary()函数的参数,可以根据后面的赋值进行返回
> my_fun3('Here is summary for values:',value,digit =2)
[1] "Here is summary for values:"
Min. 1st Qu. Median Mean 3rd Qu.
1.000 5.074 7.106 6.715 8.675
Max.
10.000
addmup <- function(x,...) {
args <-list(...)
for (a in args) x <- x+a
x
}
addmup(1,2,3,4,5)
normalize <- function(x,m = mean(x,...),s = sd(x,...),...) {
(x-m) / s
}
normalize(x = 1:100)
学习重点:function()函数的用法(自定义函数),缺省参数(…)的用法,构造形式:
构造函数 {
执行的程序}
给函数赋值
n 数据的读取
u File import Dataset
l .csv(逗号分隔符文件),skip跳过前面的几行
u read.csv() R的内置函数,用于数据读取,参数设置:
read.csv(file = ‘完整路径,要加上文件的后缀名’,header = TRUE是指把第一行当做变量名,sep = ‘,’ 是指分隔符,row.names = 可传入字符串向量,用来定义每一行的名称;col.names 用于定义列名,na.strings = c(‘ ’,000,999)用于定义缺失值,stringAsFactors =TRUE 把字符串转换成因子)
示例:my_file2 <- read.csv(file = '绝对路径.csv',header = TRUE)
u 如何把excel文件转换成csv文件:文件—另存为
u 如何读取文本文件(txt或xls格式的) read.table ,参数设置与read.csv是一致的。
示例:my_file3<- read.table(file = '绝对路径.txt',header = TRUE)
u 如何快速读取excel文件,用readxl 包,path相当于file,默认第一行为列名
my_file4 <- read_excel(path = '绝对路径','')
但如果excel中数据过多会报错,解决办法:
当用EXCEL作为数据存储目标,从数据库导出数据时由于EXCEl的设置最多只能导入65533条数据。导入之后用编辑软件查看和编辑改文件没有问题,但是使用分析软件读取时却可能发生错误。
例如,使用R读取时,会报如下错误:
Error in read_fun(path = path, sheet = sheet, limits = limits, shim = shim, :
std::bad_alloc
显示内存分配错误,为了解决这个问题最简单的办法是另存为CSV格式,或者一开始就将数据导入到CSV文件中
u XLConnect包中有一个readWorksheetFromFile()函数,方便数据的局部读取。参数设置如下:
my_file5 <- readWorksheetFromFile(file = 'D:\analysis\test.xlsx',sheet = 1,startRow = 5,endRow =10,startCol = 2,endCol = 4)
u 如何读取SPSS SAS STATA 三种格式的数据
l Flie import Dataset
l 用foreign扩展包中的read.spss()函数读取SPSS格式的函数
my_spss <- read.spss(file = '绝对路径.sav',to.data.frame = TRUE()指的是转换成数据框,TRUE代表是)
l 用foreign扩展包中的read.ssd()函数读取SAS格式的函数
l 用foreign扩展包中的read.dta()函数读取STATA格式的函数
l 文本的读取:使用readLines()内置函数
my_text<-readLines(con = '绝对路径.txt')
读取基因序列的文本:my_seq <- readLines(con = '绝对路径.fasta')
l 用stringi扩展包中的stri_read_lines()函数,也可以导入基因序列
my_seq2 <- stri_read_lines('绝对路径.fasta')
l 的
n 数据的写出和导出
u scan()函数:x<- scan() 在控制台输入数字,按两次回车结束输入,输入x,得到返回值
u cat()函数:可以实现写出控制台上,也可以写在文件中:
cat(1:10)
cat(1:10,file = ‘绝对路径.txt’)
u 导出csv文件:用write.csv()函数
write.csv(my_file2(文件名),file = '绝对路径/newfile.csv') #newfile是此处新建的
u 导出excel文件,直接在导出时选择csv格式
write.csv(my_file3(文件名),file = '绝对路径/newfile.csv') #file3为excel文本
u 导出文本文件:writeLines()函数
u 用foreign扩展包中相应的写出的函数(如STATA),具体可从help中查找
注:在遇到新函数时可从help中学习用法,在使用函数参数是,可按Tab查看可选参数及使用方法。