数据类型
Vectors
:向量是R
中最基本的数据类型,它由一系列相同数据类型的元素组成。R中的向量可以是数值型、字符型、逻辑型等。Matrix
:矩阵是二维的数据结构,其中包含相同数据类型的元素。可以通过函数matrix()
创建矩阵,或者将向量转换为矩阵。Data Frame
:数据框是一种类似于表格的数据结构,其中不同的列可以包含不同的数据类型。数据框是处理和分析数据的常见数据类型。可以通过函数data.frame()
创建数据框。List
:列表是一种特殊的向量,它可以包含不同数据类型的元素,甚至可以包含其他的列表。
R 语言的标准差
当我们按照课本里的公式去实现一个求标准差的函数时大概是这样的
get_sd <- function(vec) {
square_sum <- 0
vec_length <- length(vec)
vec_mean <- mean(vec)
for (item in vec) {
square_sum <- square_sum + (item - vec_mean) ^ 2
}
vec_sd <- sqrt(square_sum / vec_length)
return(vec_sd)
}
但是当我们使用 R
语言中自带的 sd
函数计算标准差的时候答案却不太一样
测试数据 num_vec <- c(1, 2, 3, 4)
测试结果
get_sd(num_vec)
# [1] 1.118034
sd(num_vec)
# [1] 1.290994
那么问题到底出现在哪一个环节呢
一通 Google
后在 Standard Deviation in R Seems to be Returning the Wrong Answer - Am I Doing Something Wrong?找到了答案
意思大致是说 R
语言中内建的 sd
函数计算的是样本标准差而我们书本里教的则是整体标准差
样本标准差的时候分母是 n-1
而整体标准差的分母则是 n
分母的差别造成了两次实验结果的差异
R 语言的返回值
- R 语言中 return 本身就是一个函数,所以必须使用
return(...)
的方式,括号不能省略;这意味着显式返回变成一种函数调用,可能降低程序运行效率。 - 不使用 return 也可以提供返回值,所以 R 语言的普遍习惯用法是避免显式调用
return()
。 - 如果显式调用
return()
可以使得函数的结构更加清楚,那就尽管调用吧,没有问题。
参考资料:StackOverflow - Explicitly calling return in a function or not
NA 与 NULL 的区别
在 R 语言中,缺失值用 NA表示,空值用NULL表示。初学者在学习 R 语言时,一般都会被这两者弄糊涂,常常错误地把这两者视为等价的。
library() 与 require() 的区别
library()
和 require()
都可以载入包,但二者存在区别。
在一个函数中,如果一个包不存在,执行到 library 将会停止执行,require 则会继续执行。
require 将会根据包的存在与否返回 TRUE
或者 FALSE
apply 函数族
-
lapply
- apply function over list or vector
- output = list
-
sapply
- apply function over list or vector
- try to simplify list to array
-
vapply
- apply function over list or vector
- explicitly specify output format
碰到的函数
函数 | 功能 |
---|---|
rnorm | 生成一系列的随机数 |
strsplit | 分割字符串 |
sd | 计算样本标准差 |
args | 获得函数参数 |
sample | 对数据进行抽样 |
gsub | 用于对的删减、增补、替换和切割 |
identical | 判断两个对象是否相等 |
cat | 连接并输出 |
runif | 生成均匀分布随机数 |
数字相关函数
函数 | 功能 |
---|---|
abs | 取绝对值 |
sum | 求和 |
mean | 求平均住 |
round | 四舍五入 |
floor | 向下取整 |
ceiling | 向上取整 |
trunc | 向零的方向截取 |
signif | 保留有效数字 |
数据相关函数
函数 | 功能 |
---|---|
seq | Generate sequences, by specifying the from , to , and by arguments. |
rep | Replicate elements of vectors and lists. |
sort | Sort a vector in ascending order. Works on numerics, but also on character strings and logicals. |
rev | Reverse the elements in a data structures for which reversal is defined. |
str | Display the structure of any R object. |
append | Merge vectors or lists. |
is.*() | Check for the class of an R object. |
as.*() | Convert an R object from one class to another. |
unlist | Flatten (possibly embedded) lists to produce a vector. |
正则表达式相关函数
函数 | 功能 |
---|---|
grepl | which returns TRUE when a pattern is found in the corresponding character string |
grep | which returns a vector of indices of the character strings that contains the pattern |
sub | replace first match |
gsub | replace all matches |
如何安装 XLConnect
-
安装 JDK
-
配置
JAVA_HOME
Sys.setenv(JAVA_HOME='D:\\Program Files\\Java\\jre1.8.0_202')
-
安装
XLConnect
install.packages("XLConnect")