逗号的意义? R编程

The significance of a comma? R programming

在 Coursera 的 R 课程作业 1 之前执行练习作业。

练习作业显示["Day"],但我发现["Day"]得到相同的结果。他们为什么要在 header "Day" 列前加逗号?

> andy[which(andy[, "Day"] == 30), "Weight"]   
[1] 135   
> andy[which(andy["Day"] == 30), "Weight"]    
[1] 135

附加信息 - 结构 (str)

> str(andy)  
'data.frame':   30 obs. of  4 variables:  
 $ Patient.Name: Factor w/ 1 level "Andy": 1 1 1 1 1 1 1 1 1 1 ...  
 $ Age         : int  30 30 30 30 30 30 30 30 30 30 ...  
 $ Weight      : int  140 140 140 139 138 138 138 138 138 138 ...  
 $ Day         : int  1 2 3 4 5 6 7 8 9 10 ...  

这里有一点 "cheat sheet" 可能有助于理解子集 data.frames 和 类 各自输出的不同方法。您询问的逗号会导致所选列的矢量化版本。不使用列 returns 该列的 data.frame 版本。您也可以像我在下面所做的那样使用 $ 符号。

andy = data.frame(Day = c(1:30), Weight = round(rnorm(30, 138, 1), 0))
andy[which(andy["Day"] == 30), "Weight"]    
#[1] 138

andy[which(andy[,"Day"] == 30), "Weight"]   
#[1] 138

andy[which(andy$Day == 30), "Weight"]   
#[1] 138

andy$Weight[andy$Day == 30]
#[1] 138

andy$Weight[andy["Day"] == 30]
#[1] 138

andy$Weight[andy[,"Day"] == 30]
#[1] 138

subset(andy, andy$Day == 30)$Weight
#[1] 138

subset(andy, andy$Day == 30)["Weight"]
#   Weight
#30    138

subset(andy, andy$Day == 30)[,"Weight"]
#[1] 138

class(andy["Day"])
#[1] "data.frame"

andy["Day"]
#    Day
# 1    1
# 2    2
# 3    3
...

class(andy[,"Day"])
#[1] "integer"

andy[,"Day"]
#[1]  1  2  3  4  5  6 ...

class(andy$Day)
#[1] "integer"

andy$Day
#[1]  1  2  3  4  5  6 ...