R语言学习笔记之四

仅用于记录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  自定义函数:自己编写一个需要用的函数

扫描二维码关注公众号,回复: 2540627 查看本文章

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跳过前面的几行

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)

如何把excel文件转换成csv文件:文件—另存为

如何读取文本文件(txt或xls格式的) read.table ,参数设置与read.csv是一致的。

示例:my_file3<- read.table(file = '绝对路径.txt',header = TRUE)

如何快速读取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文件中

XLConnect中有一个readWorksheetFromFile()函数,方便数据的局部读取。参数设置如下:

my_file5 <- readWorksheetFromFile(file = 'D:\\analysis\\test.xlsx',sheet = 1,startRow = 5,endRow =10,startCol = 2,endCol = 4)

如何读取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查看可选参数及使用方法。

猜你喜欢

转载自www.cnblogs.com/ppjs/p/9417960.html