数据框
数据框 用于存储类似电子表格的数据
可被看作是每列可存储不同数据类型的矩阵,或是非嵌套的列表,其中每个元素具有相同的长度
创建数据框
data.frame函数
a_data_frame <- data.frame(
x = letter[1:5],
y = rnorm(5),
z = runif(5) > 0.5
)
class(a_data_frame)
## [1] "data.frame"
每类的类型可以和其它列不一样,但在同一列中的元素类型必须相同
colnames
rownames
names函数 返回和colnames一样的结果
dimnames
nrow
ncol
length返回和ncol一样的结果
dim
row.names
col.names
可以使用不同长度的向量来创建数据框,只要长度较短的向量刚好循环至总长度
从技术上讲,所有向量长度的最小公倍数必须与最长向量的长度相等
如果长度不相等,将引发错误
创建数据框的另一个要点是,在默认情况下,列名必须是唯一且有效的变量名称 check.names=F可关闭这个特性
索引数据框
正整数、负整数、逻辑值、名称
选择一个以上的列,所得到的子集也是一个数据框
只选择一个列,结果为向量
subset函数
参数: 数据框 行的逻辑向量 要保留的名字向量
a_data_frame[a_data_frame$y >0 | a_data_frame$z, "x"]
subset(a_data_frame, y >0 |z,x)
基本数据框操作
t函数转置 所有的列将被转换为相同的类型,然后将变成一个矩阵
cbind 不会对列名作重复性检查
rbind 对列重新排序以匹配
merge 当两个数据框有相同的列时,指定包含键值的列以做匹配
merge(a_data_frame, another_data_frame, by = "x")
colSums
colMeans
rowSums
rowMeans
环境和函数
环境
所创建的所有变量都要存储在某处,即环境
环境本身也是另一种类型的变量
大部分用于列表的语法也同样适用于环境
可以强制地把列表当作环境使用
environment函数 返回包含地特定函数地环境
new.env函数 创建新环境
get函数 检索变量
get("monnday", an_environment)
ls(envir = an_environment)
ls.str(envir = an_environment)
exists 测试变量是否在环境中
exists("pythag", an_environment)
## [1] TRUE
as.list 环境到列表
as.environment 列表到环境
list2env 列表到环境
所有的环境都是嵌套的,它们必须有一个父环境(除了位于顶端的特殊环境 空环境除外)
默认情况下,exists和get函数也将从父环境中寻找变量,可以传入inherit=FALSE来改变这种行为,使它们仅在特定的环境中搜索
nested_env <- new.env(parent=an_environment)
exists("pythag", nested_env)
## [1] TRUE
exists("pythag", nested_env, inherits=F)
## [1] FALSE
框frame 这个词几乎可以和 环境 互换,这意味着工作环境中的一些函数名称里可能有frame,最常见的使parent.frame
访问全局变量
non_stormers <<- c(3, 7, 8, 13, 17, 18, 21)
get("non_stormers", envir = globalenv())
head(ls(envir= baseenv()), 20)
在另外两种情况下,也可能遇到环境
调用函数时,函数所定义的所有变量都被存储在属于该函数的环境中(函数及其环境有时称为闭包)
加载包时,包中的函数将存储与其搜索路径的环境中

被折叠的 条评论
为什么被折叠?



