R-数据框+环境

数据框

数据框 用于存储类似电子表格的数据
可被看作是每列可存储不同数据类型的矩阵,或是非嵌套的列表,其中每个元素具有相同的长度

创建数据框

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)

在另外两种情况下,也可能遇到环境

调用函数时,函数所定义的所有变量都被存储在属于该函数的环境中(函数及其环境有时称为闭包)

加载包时,包中的函数将存储与其搜索路径的环境中

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值