子集数据帧并始终接收数据帧作为返回类型

时间:2016-10-07 21:58:54

标签: r

如何对数据框进行子集化:

df  <- data.frame(a = c(1,2,3), b = c(4,5,6))

即使只选择了一列,我始终会返回数据框?

选择两列时的结果:

class( df[,1:2] )
[1] "data.frame"

仅选择一列时,结果不符合要求:

class( df[,1] )
[1] "numeric"

选择一列时所需的结果相当于:

class( data.frame(a = c(1,2,3) )

2 个答案:

答案 0 :(得分:1)

从李哲元澄清:

df[1]
df[,1, drop = FALSE]

返回仅包含第1列的数据框。

如果你想要行和列的子集,这些对我有用:

df[1:2, 1, drop = FALSE]
subset(df[1], a < 3)   
subset(df, subset = a<3, select = a)

答案 1 :(得分:1)

正如评论中所建议的那样,这两种可能性都能提供我正在寻找的东西。感谢您帮助我更好地理解这一点!

df[1]

df[,1,drop=FALSE]