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的基本语法暂时总结到这里,下一次继续学习函数之后的部分。

R语言语法基础一的更多相关文章

  1. R语言语法基础二

    R语言语法基础二 重塑数据 增加行和列 # 创建向量 city = c("Tampa","Seattle","Hartford"," ...

  2. R语言编程艺术(3)R语言编程基础

    本文对应<R语言编程艺术> 第7章:R语言编程结构: 第9章:面向对象的编程: 第13章:调试 ============================================== ...

  3. R语言学习-基础篇1

    ###第一周:R基础 rm(list = ls())  #ctr+L###矩阵相乘,函数diag()a=matrix(1:12,nrow=3,ncol=4)b=matrix(1:12,nrow=4,n ...

  4. 转载 R语言颜色基础设置

    原文链接:http://www.biostatistic.net/thread-5065-1-1.html R语言在画图形的时候,经常遇到颜色设定问题,用户可以根据color.rgb值和hsv值来设定 ...

  5. R语言学习-基础篇

    从五月10日开始自学R in action,将我的学习所得逐渐发布在博客上. chapter1.新手上路 工作空间:存储着所有用户定义的对象(向量,矩阵,函数,数据框,列表): 当前的工目录保存是R用 ...

  6. R语言画图基础参数设置

    Graphical Parameters You can customize many features of your graphs (fonts, colors, axes, titles) th ...

  7. R语言常用基础知识

    seq(from = 1, to = 1, by = ((to - from)/(length.out - 1)),     length.out = NULL, along.with = NULL, ...

  8. R语言语法笔记

    ## 1. 数据输入 ## a$b # 数据框中的变量 a = 15 # 赋值 a <- 15 # 赋值 a = c(1,2,3,4,5) # 数组(向量) b = a[1] # 数组下标,从1 ...

  9. go语言语法基础

    1. go标记 Go 程序可以由多个标记组成,可以是关键字,标识符,常量,字符串,符号 如:fmt.Println("hello world") 2.行分隔符 在 Go 程序中,一 ...

随机推荐

  1. pycaffe简明文档

    pycaffe简明文档 by ChrisZZ, imzhuo@foxmail.com 2018年01月18日19:00:56 说明 caffe的python接口没有官方说明文档,例如查看一个函数的用法 ...

  2. CDOJ1927 爱吃瓜的伊卡洛斯(2) 【并查集】启发式合并+set

    伊卡洛斯很爱吃西瓜.一次,他来到一个西瓜摊旁,发现水果摊有N个西瓜,西瓜有红色.黄色.绿色.蓝色……等等数不清的颜色. 伊卡洛斯很想知道知道一些信息,便于老板交谈了起来. 当老板的话的第一个字符为”A ...

  3. 一起学Hadoop——使用自定义Partition实现hadoop部分排序

    排序在很多业务场景都要用到,今天本文介绍如何借助于自定义Partition类实现hadoop部分排序.本文还是使用java和python实现排序代码. 1.部分排序. 部分排序就是在每个文件中都是有序 ...

  4. 【Android】让Python在Android系统上飞一会儿

    第一节 在手机上配置Python运行环境 1.下载和安装 Scripting Layer for Android (SL4A) Scripting Layer for Android (SL4A) 是 ...

  5. ThemeableBrowser在IOS中按钮图片的使用

    1. 首先确保图片的名称为 ***@1x.png, ***@2x.png 或 ***@3x.png iPhone —— iPhone3GS ***@1x.png iPhone —— iPhone6 * ...

  6. C# 类的序列化和反序列化

    序列化 (Serialization)将对象的状态信息转换为可以存储或传输的形式的过程.在序列化期间,对象将其当前状态写入到临时或持久性存储区.以后,可以通过从存储区中读取或反序列化对象的状态,重新创 ...

  7. TreeSet集合的自然排序与比较器排序、Comparable接口的compareTo()方法

    [自然排序] package com.hxl; public class Student implements Comparable<Student> { private String n ...

  8. day 35 协程与gil概念

    博客链接: http://www.cnblogs.com/linhaifeng/articles/7429894.html 今日概要: 1 生产者消费者模型(补充) 2 GIL(进程与线程的应用场景) ...

  9. busybox linux-2.6.2 编译安装中碰到的若干问题

    Q1   /busybox-1.18.4/scripts/gcc-version.sh: line 11: arm-linux-gcc: command not found 1.问题:/home/ub ...

  10. Manager解决Process进程之间的数据访问

    import multiprocessing mgr = mutiprocessing.Manager() 开启一个守护子进程,并返回用来与其通信的管理器 share_list = mgr.list( ...