R语言个人小笔记

快期末考了在这边做个笔记方便我观看哈哈

  • Data Component
  • Data Frame & Logic Function
  • Advanced Math Operation
  • Logic Package
  • Advanced Logic Function

Data Component

用来分类资料
语法为:

factor()

x<-c("yes","no","yes","no","no","yes")
factor(x)
#Levels: no yes
y<-factor(x,levels = c("yes","no","middle"))
y
#Levels: yes no middle
z<-factor(x,levels = c("yes","no","middle"),labels = c("y","n","m"))
z
#Levels: y n m
//labels用来帮物件取名

Factor Function

factor()
levels()
nlevels()
length()
ordered()

x<-c("yes","no","yes","no","no","yes")
x<-factor(x,levels=c("yes","no","middle"),labels = c("y","n","m"))
factor(x)
levels(x)
nlevels(x)
length(x)
ordered(x)

> factor(x)
[1] y n y n n y
Levels: y n
> levels(x)
[1] "y" "n" "m"
> nlevels(x)
[1] 3
> length(x)
[1] 6
> ordered(x) //按照levels里的排序
[1] y n y n n y
Levels: y < n

第二种语法:

Table() 分类并且计算数量

x<-c("d","a","e","c","d","b","c","d","e","f")
table(x)
Output:
a b c d e f 
1 1 2 3 2 1 

Data Frame & Logic Function

Vector、Matrix、Array 物件资料型态相同
Data Frame 可以有弹性的资料型态

x<-1:12
y<-c("a","b","c","d","e","f","g","h","i","j","k","l")
k<-rbind(x,y)
k
is.character(k)
is.numeric(k)
data.frame(x,y)

>k //使用rbind资料型态全变为字串
  [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
x "1"  "2"  "3"  "4"  "5"  "6"  "7"  "8"  "9"  "10"  "11"  "12" 
y "a"  "b"  "c"  "d"  "e"  "f"  "g"  "h"  "i"  "j"   "k"   "l"  
> is.character(k)
[1] TRUE
> is.numeric(k)
[1] FALSE
> data.frame(x,y)
    x y
1   1 a
2   2 b
3   3 c
4   4 d
5   5 e
6   6 f
7   7 g
8   8 h
9   9 i
10 10 j
11 11 k
12 12 l

which为逻辑函数
例子:

//如有一段程序码
x.info<-data.frame(Name=c("Tony","Mary","Joe","Jessica"),Gender=c("Male","Female","Male","Female"),Score=c(81,92,76,53),stringsAsFactors=FALSE)
//如何使用which输出成以下
 Name Gender Score Result
1    Tony   Male    81   pass
2    Mary Female    92   pass
3     Joe   Male    76   pass
4 Jessica Female    53   fail

Answer:
Result<-c(91,92,76,53)
Result[which(Result>=60)]<-"pass"
Result[which(Result<60)]<-"fail"
x.info<-cbind(x.info,Result)
x.info

Advanced Math Operation

List是一种特别的物件集合,它的元素也由序号(下标)区分,但是各元素的型别可 以是任意物件,不同元素不必是同一型别。

y<-list(Name=c("Tony","Mary","Joe"),Gender=c("Male","Female","Male","Female"),Score=c(81,92,76,53))

//如何呈现所有Name
y[1] or y[[1]]
//如何呈现所有Score
y[3] or y[[3]]
//如何呈现Mary's Score
y[[3]][2]
//如何呈现Mary's Data
y[[1]][2] y[[2]][2] y[[3]][2]

结合两个Data Frame

x<-data.frame(Name=c("Tony","Mary","Joe","Jessic"),Gender=c("Male","Female","Male","Female"),Score=c(81,92,76,53),stringsAsFactors=FALSE)
y<-data.frame(Name=c("Pete","Lucy","Dora","Kevin"),Gender=c("Male","Female","Female","Male"),Score=c(86,72,96,83),stringsAsFactors=FALSE)

x1<-list(x,y)
x1

output:
[[1]]
    Name Gender Score
1   Tony   Male    81
2   Mary Female    92
3    Joe   Male    76
4 Jessic Female    53

[[2]]
   Name Gender Score
1  Pete   Male    86
2  Lucy Female    72
3  Dora Female    96
4 Kevin   Male    83

可用 $ 符号呼叫物件

y<-list(Name=c("Tony","Mary","Joe"),Gender=c("Male","Female","Male","Female"),Score=c(81,92,76,53))

> y$Name
[1] "Tony" "Mary" "Joe" 

呼叫多个物件

> y[2:3]
$Gender
[1] "Male"   "Female" "Male"   "Female"

$Score
[1] 81 92 76 53

取代物件

y[2:3]<-list(c("Male","Female","Female","Male"),c(41,22,56,63))
y[2:3]

> y[2:3]
$Gender
[1] "Male"   "Female" "Female" "Male"  

$Score
[1] 41 22 56 63

新增新物件

y[["Height"]]<-c(170,167,172,183)

Logic Package

将一个字串分割成多个字串,可以使用 strsplit 函数,第一个参数是输入的字串,而第二个参数则是分隔字串:
strsplit()

x<-c("Hello R World","Hi")
strsplit(x,"")

output:
[[1]]
 [1] "H" "e" "l" "l" "o" " " "R" " " "W" "o" "r" "l" "d"

[[2]]
[1] "H" "i"

转大写
toupper()

转小写
tolower()

除去重复物件
unique()

z<-c(3,5,7,9,2,4,6,13,5,7,9)
unique(z)

output:
[1]  3  5  7  9  2  4  6 13

将多个字串连接:
paste()

a<-c("Distance","are","normally","used","to","measure","the","similarity")
paste(a)
paste(a,collapse = "")
paste(a,collapse = " ")

output:
> paste(a)
[1] "Distance"   "are"        "normally"   "used"      
[5] "to"         "measure"    "the"        "similarity"
> paste(a,collapse = "")
[1] "Distancearenormallyusedtomeasurethesimilarity"
> paste(a,collapse = " ")
[1] "Distance are normally used to measure the similarity"

结合两向量:

str1<-letters[1:5]
str2<-1:5
paste(str1,str2)

output:
[1] "a 1" "b 2" "c 3" "d 4" "e 5"

个别参数分隔(R 预设用空白相隔):

str<-letters[1:5]
paste("A",str)
paste("A",str,sep="")

output:
> paste("A",str)
[1] "A a" "A b" "A c" "A d" "A e"
> paste("A",str,sep="")
[1] "Aa" "Ab" "Ac" "Ad" "Ae"

撷取字串:
substr()

x<-c("Hello R World")
substr(x,start = 4,stop = 9)

output:
[1] "lo R W"

资料撷取:
grep()

x<-c("Hello","R","World")
grep("l",x)
x[grep("l",x)]

output:
> grep("l",x)
[1] 1 3
> x[grep("l",x)]
[1] "Hello" "World"

Advanced Logic Function

新增函数

x<-function(num){
  y<-num+1
  return(y)
}
x(5)

output:
[1] 6

输入阵列

x<-function(v){
  x.percent<-round(v*100,digits = 2)
  x.final<-paste(x.percent,sep = "","%")
  return(x.final)
}
y<-c(0.8932,0.2345,0.07641,0.77351)
x(y)

output:
[1] "89.32%" "23.45%" "7.64%"  "77.35%"

区域变数与全域变数

x1<-3
x<-function(n){
  x1<-n+3
  return(x1)
}
x(3) //结果为6
z<-x1+2 //结果为5

搭配switch

x<-function(n){
  if(n>5) index<-1
  if(n<=5) index<-2
  switch(index,a<-"大於5",a<-"小於5")
  return(a)
}
x(6)
x(4)

output:
> x(6)
[1] "大於5"
> x(4)
[1] "小於5"

For回圈

for(n in 1:10){
  print(n)
}
x<-c("hello","R","world")
for (n in x) {
  print(n)
}

output:
> for(n in 1:10){
 print(n)
 }
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
[1] 6
[1] 7
[1] 8
[1] 9
[1] 10
> x<-c("hello","R","world")
> for (n in x) {
   print(n)
 }
[1] "hello"
[1] "R"
[1] "world"

//找出0~20的偶数
x<-function(n){
  re<-c()
  for(i in n){
    if(i%%2==0){
      re<-c(re,i)
    }
  }
  return(re)
}
x(0:20)

<<:  Electron/Nginx/NodeJS/MongoDB开发HIS之架构概述

>>:  《赖田捕手:追加篇》第 33 天:妥善运用 Heroku APP 暂存空间

D28. 学习基础C、C++语言

D28. 题目练习 这次一样是练3n+1的题目,之前是用C语言,这次用C++来写 #include&...

JAVA - JAVA Maven 错误处理

JAVA - JAVA Maven 错误处理 参考资料 参考资料1:命令行mvn打包的时候报错:No...

26 - MarkdownLint - Lint Markdown 文件

Markdown 格式不需要编辑器添加任何的支援就可以撰写,利用简单的语法就可以定义各种样式,是现今...

什麽是 JSX (Day2)

介绍JSX JSX 是一种在 JavaScript 里面的标签语法,让我们可以在写逻辑时使用 HTM...