数据集[,';列';]和R中的数据集$column之间有什么区别?

数据集[,';列';]和R中的数据集$column之间有什么区别?,r,R,如果我想在R中列出数据集中一列的所有行,我可以通过以下两种方式完成: > dataset[,'column'] > dataset$column 看来这两个都给了我相同的结果。区别是什么?在实践中,只要数据集是一个数据帧,差别不大。主要区别在于dataset[,“column”]公式接受变量参数,如j在实践中,只要dataset是一个数据框架,就不会太多。主要区别在于dataset[,“column”]公式接受变量参数,如j使用“str”命令查看区别: > mydf u

如果我想在R中列出数据集中一列的所有行,我可以通过以下两种方式完成:

> dataset[,'column'] 
> dataset$column

看来这两个都给了我相同的结果。区别是什么?

在实践中,只要数据集是一个数据帧,差别不大。主要区别在于
dataset[,“column”]
公式接受变量参数,如
j在实践中,只要
dataset
是一个数据框架,就不会太多。主要区别在于
dataset[,“column”]
公式接受变量参数,如
j使用“str”命令查看区别:

> mydf
  user_id Gender Age
1       1      F  13
2       2      M  17
3       3      F  13
4       4      F  12
5       5      F  14
6       6      M  16
> 
> str(mydf)
'data.frame':   6 obs. of  3 variables:
 $ user_id: int  1 2 3 4 5 6
 $ Gender : Factor w/ 2 levels "F","M": 1 2 1 1 1 2
 $ Age    : int  13 17 13 12 14 16
> 
> str(mydf[1])
'data.frame':   6 obs. of  1 variable:
 $ user_id: int  1 2 3 4 5 6
> 
> str(mydf[,1])
 int [1:6] 1 2 3 4 5 6
> 
> str(mydf[,'user_id'])
 int [1:6] 1 2 3 4 5 6

> str(mydf$user_id)
 int [1:6] 1 2 3 4 5 6
> 
> str(mydf[[1]])
 int [1:6] 1 2 3 4 5 6
> 
> str(mydf[['user_id']])
 int [1:6] 1 2 3 4 5 6

mydf[1]是一个数据帧,而mydf[,1],mydf[,'user_id'],mydf$user_id,mydf[[1]],mydf['user_id']是向量。

使用'str'命令查看差异:

> mydf
  user_id Gender Age
1       1      F  13
2       2      M  17
3       3      F  13
4       4      F  12
5       5      F  14
6       6      M  16
> 
> str(mydf)
'data.frame':   6 obs. of  3 variables:
 $ user_id: int  1 2 3 4 5 6
 $ Gender : Factor w/ 2 levels "F","M": 1 2 1 1 1 2
 $ Age    : int  13 17 13 12 14 16
> 
> str(mydf[1])
'data.frame':   6 obs. of  1 variable:
 $ user_id: int  1 2 3 4 5 6
> 
> str(mydf[,1])
 int [1:6] 1 2 3 4 5 6
> 
> str(mydf[,'user_id'])
 int [1:6] 1 2 3 4 5 6

> str(mydf$user_id)
 int [1:6] 1 2 3 4 5 6
> 
> str(mydf[[1]])
 int [1:6] 1 2 3 4 5 6
> 
> str(mydf[['user_id']])
 int [1:6] 1 2 3 4 5 6

mydf[1]是一个数据帧,而mydf[,1],mydf[,'user_id'],mydf$user_id,mydf[[1]],mydf['user_id']是向量。

看一看,看一看,这不是唯一的区别。不要忘记,
$
方法允许部分名称匹配。因此,可以(但不应该)执行
dataset$col
并获取
dataset$column
的值。这可能会给粗心的人带来问题。事实上,我确实忘记了,制表符完成和对部分匹配的健康不信任是什么原因。
[[
支持部分匹配,例如:
dat@thelatemail更多我不知道的事情。editedohh,这就是
exact
在列表索引中所做的?!我从来没有真正花时间去了解它,但我知道它就在那里。呜呜!对于latemail!这不是唯一的区别。别忘了
$
方法允许部分名称matc因此,我们可以(但不应该)做
dataset$col
并获取
dataset$column
的值。这可能会给不小心的人带来问题。实际上,我确实忘记了,制表符完成和对部分匹配的不信任[[
支持部分匹配,例如:
dat@thelatemail更多我不知道的事情。编辑啊哈,这就是
exact
在列表索引中所做的?!我从来没有真正花时间去了解它,但我知道它就在那里。呜呜!对于latemail!如果你想获得
data.frame
,你可以使用
drop=FALSE
和其中的两个>返回。如果您想获得一个
data.frame
返回,可以将
drop=FALSE
与其中的两个一起使用。