R语言学习笔记

时间:2023-02-06 01:30:32

1、运行R脚本的方法:

*********在R环境下:

方法一:

点击菜单”文件-打开程序脚本“,打开chisq2.R后,再全部选中,点右键,点”运行当前行或所选代码“;

方法二:

source("chisq2.R")

但是要首先设置好文件所在路径:

比如你的文件在桌面上

setwd("C:/Users/qoiqpwqr/Desktop")

*********在命令行中,或Linix环境下:

方法1.在后台运行R
(1)创建file.R文件
(2)在文件首行键入:
#! /path/to/Rscript
(3)在下面的行中,键入R代码
(4)保存(记得有png(),jpeg(),...等函数的代码最后一定要有dev.off())
(5)在file.R的工作目录下,在终端中输入以下命令:
R CMD BATCH --args file.R
(6) file.R被运行了!!!

优点:R命令行下打错命令后回车,之前的所有相关命令几乎全军覆没。如果不想发生这种情况,请写一个file.R文件。

缺点:R CMD BATCH模式是让R在系统后台运行file.R,运行时微微地卡了2s。

方法2.创建R脚本
(1)创建file.R文件
(2)在文件首行键入:
#! /usr/bin/env Rscript
(3)在下面的行中,键入R代码
(4)保存(记得有png(),jpeg(),...等函数的代码最后一定要有dev.off())
(5)在file.R的工作目录下,在终端中输入以下命令:
R CMD BATCH --args file.R

或者Rscript file.R
(6)file.R被运行了!!!

优点: 比较前者不太占用系统资源,而且可以在终端在直接运行,这样就可以和BASH语言在一起应用了。 具体如下:
chmod 755 file.R
./file.R                 #这种方式下,把file.R改为file.sh或file ...,在Ubuntu下都能运行

 

方法3.在BASH脚本中插入R代码
(1)在file.sh文件中键入:
#! /bin/sh
R --slave [other option]<<EOF
# R代码
EOF
(2)在终端下运行
chmod 755    file.sh
./file.sh
(3) file.sh被运行了,包括里边的R代码

 

优点:R代码能插在BASH脚本中运行,它就可以在其它更加强大的脚本中运行。事实上R-python已经成了python的一个模块了。

 

2、获取和设定环境变量:

问题

你希望查看某个环境变量的值,或者改变其值。

解决方案

使用Sys.getenv函数查看环境变量值,使用Sys.setenv函数设定环境变量值,使用Sys.putenv函数改变环境变量的值:

> Sys.getenv("SHELL")
SHELL
"/bin/bash"
> Sys.setenv(SHELL="/bin/ksh")

或者

>Sys.putenv(SHELL="/bin/ksh")

附:(putenv函数与setenv函数的区别)

putenv() 函数并不copy环境变量数值到进程环境表,只是存放环境变量数值的指针,而setenv()函数则完全copy环境变量数值到进程环境表。

    • putenv可以使用程序中已定义,且值形如"name=value"的字符串变量作为函数的实参。此时,系统将不再为该环境变量分配内存,使用的是程序中定义变量的内存,而是将该字符串的变量地址保存在环境中。因此该变量应该定义为全局变量,以防止该函数推出以后导致环境变量不可用。
      char *var="sex=male";

      putenv(
      var);

    • putenv可以使用形如"name=value"的常量字符串作为函数的实参。此时系统需要为该变量分配内存,存储字符串"name=value"。
      putenv("sex=male");

setenv必须分配内存,存储字符串"name=value";

setenv("sex","male",1);

3、在R中安装好各种library之后(如rJava,RWeka),调用这些包的功能时先要进入相应的库:

>library(RWeka)

      然后才能使用里面的函数如WOW()等,否则就会出错了。

 

4、R中数据的导入及检查

> data <-read.csv("mydata.csv", header = TRUE) # 读取(导入)数据

> write.csv(data,file="mydata.csv")#导出数据为.csv格式

或者用

>data <-read.table("mydata.txt")#读取txt中ascii数据

或者用

>data <-read.arff("mydata.arff")#读取.arff中的数据,此步需进入library(RWeka)

> dim(data) # 显示数据框的维数(即结构)
  [1] 16000 8 # 先是行后是列,16000行,8列
  > data[1:10,] # 显示所有列的第1至10行
  > names(data) # 检查变量名
  [1] "V1" "V2" "V3" #这些值显示的就是变量名还没有命名,所取值为默认值。(如果数据读入R前没有为变量命名,进入R后自动命名,输出数据集后也会带有自动的命名的)
  > names(data) <-c("income","educate", "year") # 赋以变量名
  > summary(data) # 返回每个变量的五点描述(描述性统计)
 在这种情况下,summary()命令将返回最大值、最小值、平均数、中位数、上四分位数和下四分位数,也还有每个变量的缺失值。
  > str(data)#返回每个变量的状态(比如数据类型等)