R语言语法基础一
Hello world
#这里是注释 myString = "hello world" print(myString) [1] "hello world"
基本数据类型
print(class(TRUE)) #logical print(class(5)) #Numeric print(class(2L)) #Integer print(class(2+5i)) #Complex print(class("hello")) #Character print(class(charToRaw("hello"))) #Raw
对象类型
vector向量,使用c函数创建
apple = c('red',"green","yellow") print(apple) [1] "red" "green" "yellow"
List列表,可以包含不同类型的元素
list1 = list(c(2,5,3),21.3,sin) print(list1) [[1]] [1] 2 5 3 [[2]] [1] 21.3 [[3]] function (x) .Primitive("sin")
Matrices矩阵
创建二维数据集
M = matrix(data = c('a','b','c','d','e','f'), nrow = 2, byrow = TRUE) print(M) [,1] [,2] [,3] [1,] "a" "b" "c" [2,] "d" "e" "f"
Array数组
数组相比矩阵,能够具有任意数量的维度
a = array(c(1,2),dim = c(3,3,2)) print(a) , , 1 [,1] [,2] [,3] [1,] 1 2 1 [2,] 2 1 2 [3,] 1 2 1 , , 2 [,1] [,2] [,3] [1,] 2 1 2 [2,] 1 2 1 [3,] 2 1 2
Factor因子
apple_colors = c('g','g','y','r','r','r','g') factor_apple = factor(apple_colors) print(factor_apple) print(nlevels(factor_apple)) #nlevels函数是用来求level的 [1] g g y r r r g Levels: g r y [1] 3
DataFrame数据帧
BMI = data.frame( gender = c("Male","Male","Female"), height = c(152,171.5,165), weight = c(81,93,78), age = c(42,38,26) ) print(BMI) gender height weight age 1 Male 152.0 81 42 2 Male 171.5 93 38 3 Female 165.0 78 26
变量
命名规则
变量名 | 合法性 | 原因 |
---|---|---|
var_name2. | 有效 | 有字母,数字,点和下划线 |
VAR_NAME% | 无效 | 有字符'%'。只有点(.)和下划线允许的。 |
2var_name | 无效 | 以数字开头 |
.var_name, var.name | 有效 | 可以用一个点(.),但启动点(.),不应该后跟一个数字。 |
.2var_name | 无效 | 起始点后面是数字使其无效。 |
_var_name | 无效 | 开头_这是无效的 |
值得注意的是,a和a.i没有任何关系
a = 1 b = 2 c = 3 #cat函数可以连接多个(中间有空格隔开) #print函数只能输出一个,但信息更多 cat(a,b,c) 1 2 3
ls()函数可以列出当前工作空间的变量,可以用很多方法搜索,排序(支持正则)
ls(pattern = "a.[0-9]") [1] "a.1" "a.2"
rm()删除变量
rm(var1) #删除变量var1 rm(list = ls()) #删除一个列表的变量
运算符
算术运算
都是两个向量对齐,一一计算。如果不对齐会报warning(循环对齐),如果另一个是数字,会自动匹配
- 加法:+
- 减法: -
- 乘法: *
- 浮点数除法: /
- 取模: %%
- 乘除求商: %/%
- 第二个是第一个的指数: ^
关系运算
也是两两依次比较
- 大于:>
- 小于:<
- 等于:==
- 大于等于:>=
- 小于等于:<=
- 不等于:!=
rm(list = ls()) v1 = c(2, 5.5, 6) v2 = c(8, 3, 6) v1 == v2 any(v1 < v2) all(v1 > v2) [1] FALSE FALSE TRUE [1] TRUE [1] FALSE
逻辑运算
&,|,!就是判断0还是非0,返回布尔值向量
&&,||只考虑两个向量的首元素,返回一个TRUE或者FALSE
其他运算
a = 1:5 #产生一个序列向量 c(1,2) %in% a #依次判断元素是否包含在向量中 t(a) %*% a #说明a默认为列向量,这里求a^T * a
条件控制
If
if (TRUE) { print("YES") } else #这种写法,else不能单独起一行 { print("NO") } #三目运算符 x = c(-1,-2,3,4) x = ifelse(x<0, 0, x) #relu简单实现 print(x)
Switch
x = switch( 3, "first", "second", "third", "fourth" ) print(x)
包管理
.libPaths() #查看R语言库的位置 library() #列出已经安装的包 search() #列出当前环境中已经加载的包 install.packages("Package Name") #安装包 library(XML) #装载包到当前环境
循环
#for循环 a = 1:5 for(i in a) print(i) #repeat total = 0 repeat { total = total + 1; print(total); if (total > 6) break; } #while x = 1 while (x < 5) { x = x + 1 print(x) }
next语句代替了continue
小结
R的基本语法暂时总结到这里,下一次继续学习函数之后的部分。
来源:https://www.cnblogs.com/fanghao/p/7612818.html