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