R语言基础知识

R基础

帮助

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b4Zo2sKc-1653981922453)(E:\2_pictures\typora\R语言\R帮助.png)]

工作目录和工作空间

getwd() # 显示当前的工作目录
setwd() # 修改当前的工作目录
ls() # 列出当前工作空间中的对象
rm(objectlist) # 移除一个或多个对象
save.image("myfile") # 保存工作空间到文件myfile中(默认后缀.RData)
save(object, file="myfile") # 保存指定对象到一个文件中
load("myfile") # 读取一个工作空间到当前会话中

环境

为了便于管理,R提供了环境这种特殊的对象。环境可以看作是分隔出来不同的房间,数据呆在各自的房间中活动,不会相互干扰。

当用户启动R之后,R新建了一个全局环境以存放当前用户要处理的对象。这个全局环境的名字叫作.GlobalEnv。下面我们示范在不同环境中操作对象。

remove(list=object())
x <- 1:5
myenv <- new.env()
objects()
assign('x',6:10,envir=myenv)
x ^ 2
evalq(x ^ 2, envir=myenv)
objects(myenv)
parent.env(myenv)
remove('x', 'myenv')

对象和类

R是一种基于对象的语言,所以你在R语言中接触到的每样东西都是一个对象,对象中包含了我们需要的数据,同时对象也具有很多属性(Attribute)。其中一种重要的属性就是它的类(Class),R语言中最为基本的类包括了我们前面所看到的数值、逻辑、字符,在此基础上构成了一些复合型的类,包括矩阵、数组、数据框和列表。

class(people) # 查看类
attributes(people) # 观察其属性

除了上面两个函数之外,还有一个非常有用的函数str()能用以了解一个对象的底细。

str(people)


公式

形式均是类似y~x的这种写法。波浪号左侧为因变量,波浪号右侧为自变量。如果数据中变量较少我们可以直接手工输入,但如果遇到几十个变量,我们可以编程生成公式。下面的例子就是生成有50个自变量的公式。

n <- 1:50
xvar <- paste0('x', n)
right <- paste(xvar, collapse=' + ')
left <- 'y~'
my_formula <- paste(left, right)
my_formula <- as.formula(my_formula)
class(my_formula)

模型与公式

对统计学家来讲,模型是用以描述数据的简洁方式。很多时候模型以公式的形式展现,用以预测或解释。

y ~ x1 + x2 + x3 ... + xn

下面我们用一个具体的线性回归例子来看一下,使用的数据集是R内置的数据car。R语言中用于回归的函数是1m,回归后的结果存入变量model中。

model <- lm(formula=dist ~ speed, data=cars)

summary函数提供了关于回归结果更为丰富的信息,包括了各系数及其对应的P值,残差标准误和决定系数等。也可以用前面提到的class和attributes函数来了解model这个对象。

class(model)

attributes(model)
>>>
    $names
     [1] "coefficients"  "residuals"     "effects"       "rank"         
     [5] "fitted.values" "assign"        "qr"            "df.residual"  
     [9] "xlevels"       "call"          "terms"         "model"        

    $class
    [1] "lm"

向量

  • 单个数值(标量)是向量的一种特例
  • 向量的元素必须属于某种模式(mode),可以整型(integer)、数值型(numeric)、字符型(character) 、逻辑型(logical) 、复数型(complex)
  • 循环补齐(recycle):在一定情况下自动延长向量
  • 筛选:提取向量子集
  • 向量化:对向量的每一个元素应用函数使用seq()创建向量
  • 使用rep()重复向量常数
vector1 <- seq(2,10,2) # 参数依次为:起始、结束、步长
# 此处需注意优先级
vector1 <- 1:10 + 2
vector2 <- 1:(10 + 2)

生成向量

vec_logic <- c(TRUE,TRUE,TRUE,FALSE)
vec_string <- c('A','B','C','D')
vec_random1 <- runif(5)
vec_random2 <- sample(c('A','B'),size=10,replace=TRUE)
vector1 <- numeric(10)

向量的计算

# 计算去掉最大值和最小值的向量算术均值
vector <- rnorm(10)
vec_max <- max(vector)
vec_min <- min(vector)
vector_trimmed <- vector[vector<vec_max & vector>vec_min]
vec_mean <- sum(vector_trimmed)/length(vector_trimmed)

缺失值与空值

真实的数据分析工作中会经常遇到数据缺失情况,缺失的数据在R中一般表示为NA。当一个数据中包含了NA时,很多函数的行为会不一样,甚至会产生错误。

temp <- c(27, 29, 23, 14, NA)
mean(temp) # 返回值为NA
mean(temp, na.rm=T) # 很多函数都带有该参数
is.na(temp)

缺失值的意义是应该有数据而没有,起到一个占位符的作用。空值的意义则是完成没有,空值的表示是NULL。下面的例子中temp仍然只有四个元素。

temp <- c(27, 29, 23, 14,NULL)

NULL有时候可以用来方便的删除复杂对象中的一个元素,例如删除前面data_list中的data元素。

data_list$data <- NULL

表达式

表达式就是我们前面见到一些对象和运算符构成的代码组合。表达式一般会在R解释器中立刻执行,但有些情况下我们希望表达式也可以暂缓执行。

ex <- expression(x <- seq(1,10,2))
print(x)

使用eval函数来运行这个表达式

eval(ex)

还有些情况下,表达式是以字符串形式存在的,此时我们需要先用parse函数将其解析,转义为表达式.再用eval运行表达式。

tex <- c('z <- seq(1,10,2)', 'print(z)')
eval(parse(text=tex))

连接对象

R语言中的连接是指一类可以反复调用的输入输出对象。常见的连接包括了文本连接、文件连接、网络连接、压缩文件以及管道。

textcon <- textConnection('Output', 'w')
sink(textcon)
x <- rnorm(10)
summary(x)
print('这句话并没有显示在终端上,而在被写入了的output对象中')
sink()
print(output)
close(t)
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值