第三章 检查变量和工作区
3.1类
3.2不同类型的数字
3.3其他通用类
3.4检查和更改类
3.5检查变量
3.6工作区
3.1类
除了类还存在内部存储的状态(typeof),模式(mode),存储模式(storge.mode) 其他类型了解即可
简单起见,模式(mode)==类(class)来接下来的学习
变量的类型(class):numeric浮点数 integer整数 complex复数 logical逻辑值 character字符等
#3.2不同类型的数字
#检查变量类型class
class(sqrt(1:10))
class(3+1i)
class(1) #往下看后面有解释
class(1L) #添加后缀L把数字变成整型
class(0.5:4.5)
class(1:5)
'numeric'
'complex'
'numeric'
'integer'
'numeric'
'integer'
#3.3其他通用类
#character存储文本的字符
#factor存储二进制数据的原始值raw 类别数据用整数表示
#因子的内容看起来与他们所对应的的字符一样,每个值都能得到一个可读性很好的标签,标签被设置在称为因子水平的特定之中。
#节省空间便于操作
(gender <- factor(c("male","female","male","female")))
levels(gender)
nlevels(gender)
#默认情况下,因子按字母顺序排列
#因子的值被存储为整数而非字符。可以通过as.integer()调用
as.integer(gender)
#因为操作因子水平的内容时,大小写等问题,所以先处理一下字符串 利用character函数完成
as.character(gender)
malefemalemalefemale
Levels:
'female''male'
2
2121
'male''female''male''female'
#as.raw()可以把0到225之间的整数转化为原始值(raw) 此范围之外的数字全部视为0,分数和虚部不可用,对于字符串则使用charToRaw()
as.raw(1:17)
(a<- charToRaw("Fish!"))
class(a)
#其它类型的变量列入多维对象,数据框还有待学习
[1] 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11
[1] 46 69 73 68 21
'raw'
#3.3检查和更改类
#class()和is函数都可以都可以测试数据的类型
#大部分类的is.*函数比is函数更高效
is.character("red")
is.logical(FALSE)
is.list(list(a=1,b=2))
TRUE
TRUE
TRUE
#^is的意思是满足is开头字符串
#查看base包中所有is函数
ls(pattern = "^is",baseenv())#^is的意思是满足is开头字符串
'is.array''is.atomic''is.call''is.character''is.complex''is.data.frame''is.double''is.element''is.environment''is.expression''is.factor''is.finite''is.function''is.infinite''is.integer''is.language''is.list''is.loaded''is.logical''is.matrix''is.na''is.na.data.frame''is.na.numeric_version''is.na.POSIXlt''is.na<-''is.na<-.default''is.na<-.factor''is.na<-.numeric_version''is.name''is.nan''is.null''is.numeric''is.numeric_version''is.numeric.Date''is.numeric.difftime''is.numeric.POSIXt''is.object''is.ordered''is.package_version''is.pairlist''is.primitive''is.qr''is.R''is.raw''is.recursive''is.single''is.symbol''is.table''is.unsorted''is.vector''isatty''isBaseNamespace''isdebugged''isFALSE''isIncomplete''isNamespace''isNamespaceLoaded''isOpen''isRestart''isS4''isSeekable''isSymmetric''isSymmetric.matrix''isTRUE'
#is.numeric函数是对整数和浮点数都返回TRUE,则测试浮点数必须用is.double()
#R中的浮点数和整数几乎可以互换使用,只要添加L就可以互换
#
#
#转型(改变对象类型)可以用as函数或者as.numeric更高效 #分配新类问题在后面学习
x <- "123.456"
as(x,"numeric")
as.numeric(x)
#补充 options(digits=n)可以决定答应到小数点后几位
123.456
123.456
#3.4检查变量
#当在控制台输入一个运算或变量时,结果会被打印出来,因为R隐式调用了print函数
#对于内循环和函数来说,自动打印功能不能起作用,则需要调用print
a<- c(1,2,3,4,5)
for(i in a) i#没有显示
for(i in a) print(i)
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
#summary函数能为不同数据提供汇总信息
#runif函数生成30个均匀分布在0和1之间的随机数
num <-runif(30)
summary(num)
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.01316 0.30141 0.50113 0.49163 0.77021 0.93429
#sample表示随机抽样
#类别变量和逻辑变量将根据每个值的计算进行汇总
fac <- factor(sample(letters[1:5],30,replace = TRUE))#letters为内置常数包括a到z LETTERS为A到Z letters[1:5]表示a到e
summary(fac)
bool <- sample(c(TRUE,FALSE,NA),30,replace = TRUE)#sample表示随机抽样
summary(bool)
a7b4c4d9e6
Mode FALSE TRUE NA's
logical 14 4 12
#多维数组的检查
#head()查看前几行
#summary()和以上所用一样
#str()能显示对象的结构
#unclass()显示变量如何构建,
#attributes()显示当前对象所有属性列表
#View()#会把只读的变量显示为电子表格
#3.5工作区
#ls可以列出现有变量的名称 传入all.names=TRUE参数即可查看
ls()
#ls.str函数查看变量结构
ls.str()
'a''auth''bool''fac''gender''get_user_secret''GET_USER_SECRET_ENDPOINT''i''KAGGLE_BASE_URL''KAGGLE_IAP_TOKEN''KAGGLE_USER_SECRETS_TOKEN''num''TokenBigQueryKernel''x'
a : num [1:5] 1 2 3 4 5
auth : Classes 'AuthState', 'R6' ── <AuthState (via gargle)> ──────────────────────────────────────────────────── package: bigrquery app: NULL api_key: auth_active: TRUE credentials: <TokenBigQueryKernel>
bool : logi [1:30] FALSE TRUE TRUE FALSE FALSE FALSE ...
fac : Factor w/ 5 levels "a","b","c","d",..: 5 1 2 4 4 3 5 4 5 4 ...
gender : Factor w/ 2 levels "female","male": 2 1 2 1
get_user_secret : function (label)
GET_USER_SECRET_ENDPOINT : chr "/requests/GetUserSecretRequest"
i : num 5
KAGGLE_BASE_URL : chr "https://www.kaggle.com"
KAGGLE_IAP_TOKEN : chr ""
KAGGLE_USER_SECRETS_TOKEN : chr "eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0..BAXUG03K-mbUm4isxiBFWA.VOZJLpUEMW128sGTwb2kwRKGAKZ_9lTYHXXna2S"| __truncated__
num : num [1:30] 0.859 0.0132 0.9094 0.8398 0.5964 ...
TokenBigQueryKernel : Class 'R6ClassGenerator' <TokenBigQueryKernel> object generator
Inherits from: <Token2.0>
Public:
params: list
endpoint: oauth_endpoint
initialize: function ()
can_refresh: function ()
refresh: function ()
cache: function (path)
load_from_cache: function ()
clone: function (deep = FALSE)
Parent env: <environment: R_GlobalEnv>
Locked objects: TRUE
Locked class: FALSE
Portable: TRUE
x : chr "123.456"
#browseEnv提供以上类似功能
browseEnv()
R objects in .GlobalEnv environment is shown in browser ‘xdg-open’
#rm函数删除变量来清理区间 rm()
#rm(list=ls())删除所有变量
#rm函数删除变量来清理区间 rm()
#rm(list=ls())删除所有变量