快期末考了在这边做个笔记方便我观看哈哈
用来分类资料
语法为:
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
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
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)
将一个字串分割成多个字串,可以使用 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"
新增函数
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 暂存空间
A professional with certified skills sure seems in...
D28. 题目练习 这次一样是练3n+1的题目,之前是用C语言,这次用C++来写 #include&...
JAVA - JAVA Maven 错误处理 参考资料 参考资料1:命令行mvn打包的时候报错:No...
Markdown 格式不需要编辑器添加任何的支援就可以撰写,利用简单的语法就可以定义各种样式,是现今...
介绍JSX JSX 是一种在 JavaScript 里面的标签语法,让我们可以在写逻辑时使用 HTM...