共计 2770 个字符,预计需要花费 7 分钟才能阅读完成。
根底语法
变量
在 R 语言中,变量的命名形式是由肯定的要求的:
变量名 | 是否正确 | 起因 |
---|---|---|
.dad12 | 正确 | 能够以 . 开始 |
_dad12 | 谬误 | 不能够以 _ 开始 |
ad18 | 正确 | 能够以字母开始 |
5aads | 谬误 | 不能够以数字开始 |
.5aads | 谬误 | . 开始不能够间接接数字 |
ad18% | 谬误 | $ 是非法字符 |
总结来说就是,变量能够蕴含数字,字符,点符号,能够字符或点结尾,然而点后不能间接接数字。
你能够通过 print(ls())
来查看你的所有变量:
> print(ls())
[1] "a" "ad18" "adsaw" "test" "tt"
还能够通过 rm()
来删除变量:
> print(ls())
[1] "a" "adsaw" "test" "tt"
赋值语法
赋值语句:str <- "Hello World"
, 后面的语句是将右侧的字符串赋值给变量 str
,其实在 R 语言中,=
,<-
和 <<-
都能够起到赋值的作用,然而他们在许多状况下的作用是齐全不一样的,具体表现有几种(参考文献:你被 R 语言的 = 和 <- 搞昏了头吗):
PS: 最新的 R 包外面还反对 ->
, ->>
作为赋值符号,如:test(2) -> tt
, 这是非法的
第一种:<- 生成匿名函数变量
# 如果有一个函数, 承受 4 个参数作为变量进行数据处理
test <- function(data, key, value, bool){a = cat('data:',data,'key:',key) # 输入一个拼接后的字符串
c <- paste('value:',value,'bool:',bool) # 输入一个拼接后的字符串
g <- paste(a,c)
print(g)
}
# 接着我要调用这个函数(程序 =)test(data='testdata', key='testkey', value='testValue', bool=TRUE)
# 返回一个拼接后的字符串,能够看到当初是一一对应的
# [1] "data: testdata key: testkey value: testValue bool: TRUE"
# 接着我要调用这个函数(乱序 =)test(key='testkey', data='testdata', bool=TRUE, value='testValue')
# 返回一个拼接后的字符串,能够看到当初还是一一对应的
# [1] "data: testdata key: testkey value: testValue bool: TRUE"
# 接着我要调用这个函数(乱序 <-)test(key<-'testkey', data<-'testdata', bool=TRUE, value='testValue')
# 返回一个拼接后的字符串,能够看到后买你等号的并灭有被影响,# 而应用 <- 符号的最终却是依照函数定义的程序赋值,# 和咱们设想中的不统一
# [1] "data: testkey key: testdata value: testValue bool: TRUE"
第二种:<- 生成变量
此外,和 =
差别一点的就是,a = 12
表白的仅仅是传值语句,并不会在空间中保留变量,而 a <- 12
是一个表达式,这在一些其余语法中就像是 var a = 12
,以一个简略的例子来阐明:
# 定义一个简略的输入函数,默认参数等于 12
test <- function(a=12){print(a)
}
# 当咱们尝试调用函数的时候
# 应用 = 号
test(a = 6)
# [1] 6
# 应用 <- 符号
test(a <- 6)
PS: 这些都是在函数中应用的时候存在的差别,平时在控制台间接应用 a = 12
和 a <- 12
是等价的
输入函数(罕用)
R 语言的输入函数,应用极其简略,只须要将须要输入的内容作为参数传入函数即可:
> print('dsafafa')
[1] "dsafafa"
cat 和 paste
下面的两个函数都是能用于拼接输入的,他们之间的差别次要体现在,cat
函数只是单纯的拼接而后输入,而 paste
则是在输入的同时,还能将拼接后的数据以新变量保留。
> str1 = cat(1:9,c("st","nd","rd",rep("th",6)),"n",sep = '/')
1/2/3/4/5/6/7/8/9/st/nd/rd/th/th/th/th/th/th/n
> str1 #以 cat 拼接的该变量的值为空 0
NULL
> str2 = paste(1:9,c("st","nd","rd",rep("th",6)),sep = '',collapse='\n')
> str2
[1] "1st\n2nd\n3rd\n4th\n5th\n6th\n7th\n8th\n9th"
此外,函数内的参数代表的意义, 共有参数
sep
:拼接两头的宰割符,默认为空格
paste
公有参数:
collapse
:拼接完结的符号,默认为空格
cat
公有参数:
file
:文件或链接的名称,有值时输入到文件中,没有则输入到打印台;append
:为true
时将数据新增到文件开端,false
时覆盖文件原始内容,当且仅当参数 file 是文件名而非链接时,此参数才无效;fill
:是否填充(具体细节还要思考),当为false
时默认\n
换行输入labels
: 输入文件的标签,当fill
为true
才失效
sink
具体函数及参数:sink(file = NULL, append = FALSE, type = c("output", "message"), split = FALSE)
, 默认状况下,如果文件曾经存在,则它的内容将被笼罩。
file
:须要输入的文件名append
:设为true
时追加到文件中,反之则笼罩原文件type
:输入的类型,罕用的输入到文件类型为output
,message
类型则是输入正告,进行等stderr()
split
:设为true
能够保留控制台输入
其余的都好了解,其中 message
类型的数据例子如下:
## 首先定义一个可写的文件
zz <- file("C:/Users/Tutu/Desktop/testR/all.Rout", open = "wt")
## 调用 sink 函数设置类型为 message
sink(zz, type = "message")
## 应用 try 函数检测 log 函数
try(log("a"))
## 随后在之前新建的文件中能够看到:## Error in log("a") : 数学函数中用了非数值参数
其余的输入办法
## PDF 文件
pdf("filename.pdf")
## Windows 图元文件
win.metafile("filename.wmf")
## PBG 文件
png("filename.png")
## JPEG 文件
jpeg("filename.jpg")
## BMP 文件
bmp("filename.bmp")
## PostScript 文件
postscript("filename.ps")
输出函数
临时获取到的时 readLines
, 其余的应该还有很多,后续会补充,这门语言时解释性语言,相对来说更直白一些,能够间接读取表格类数据。