什么';R中数据帧的[1]、[1,]、[,1]、[1]]之间的差异是多少?
可能重复:什么';R中数据帧的[1]、[1,]、[,1]、[1]]之间的差异是多少?,r,statistics,sas,R,Statistics,Sas,可能重复: 我对数据帧类型的[1]、[1,]、[1]、[1]、[1]]的区别感到困惑 我知道,[1,]将获取矩阵的第一行,[1]将获取第一列。[[1]]将获取列表的第一个元素 但是我检查了data.frame的文档,它说 数据框是具有相同行数的变量列表 唯一行名称 然后我输入一些代码来测试使用情况 >L3 <- LETTERS[1:3] >(d <- data.frame(cbind(x=1, y=1:10), fac=sample(L3, 10, replace=TR
我对数据帧类型的[1]、[1,]、[1]、[1]、[1]]的区别感到困惑 我知道,[1,]将获取
矩阵的第一行,[1]将获取第一列。[[1]]将获取列表的第一个元素
但是我检查了data.frame
的文档,它说
数据框是具有相同行数的变量列表
唯一行名称
然后我输入一些代码来测试使用情况
>L3 <- LETTERS[1:3]
>(d <- data.frame(cbind(x=1, y=1:10), fac=sample(L3, 10, replace=TRUE)))
x y fac
1 1 1 C
2 1 2 B
3 1 3 C
4 1 4 C
5 1 5 A
6 1 6 B
7 1 7 C
8 1 8 A
9 1 9 A
10 1 10 A
> d[1]
x
1 1
2 1
3 1
4 1
5 1
6 1
7 1
8 1
9 1
10 1
>d[1,]
x y fac
1 1 1 C
>d[,1]
[1] 1 1 1 1 1 1 1 1 1 1
>d[[1]]
[1] 1 1 1 1 1 1 1 1 1 1
>L3(d[1]
x
1 1
2 1
3 1
4 1
5 1
6 1
7 1
8 1
9 1
10 1
>d[1,]
x y fac
1c
>d[,1]
[1] 1 1 1 1 1 1 1 1 1 1
>d[[1]]
[1] 1 1 1 1 1 1 1 1 1 1
让我困惑的是:[1,]和[,1]只用于矩阵
,[[1]]只用于列表
,[1]用于向量
,但为什么它们都可以在数据帧中使用呢
有人能解释一下这些用法的不同吗?在R中,运算符不只是用于一种数据类型。运算符可以重载任何您喜欢的数据类型(例如S3/S4类)
事实上,data.frames就是这样
- 由于data.frames是列表,
[i]
和[[i]]
(和$
)显示类似列表的行为
- 行、列索引对表有直观的意义,data.frame看起来像表。这可能就是定义data.frame[i,j]方法的原因
您甚至可以查看定义,它们是在S3系统中编码的(因此methodname.class
):
及
(反勾号引用函数名,否则R将尝试使用运算符并最终导致语法错误)在R中,运算符不能仅用于一种数据类型。可以为您喜欢的任何数据类型重载运算符(例如S3/S4类)
事实上,data.frames就是这样
- 由于data.frames是列表,
[i]
和[[i]]
(和$
)显示类似列表的行为
- 行、列索引对表有直观的意义,data.frame看起来像表。这可能就是定义data.frame[i,j]方法的原因
您甚至可以查看定义,它们是在S3系统中编码的(因此methodname.class
):
及
(反勾号引用函数名,否则R将尝试使用运算符并导致语法错误)实际上[[]]也可以用于数据帧实际上[[]]也可以用于数据帧
> `[.data.frame`
> `[[.data.frame`