使用另一个变量进行子集化

时间:2016-06-08 06:57:06

标签: r dataframe data.table

我有一个包含名为country的列的数据框,我希望根据该列对表进行子集化。我尝试了以下方法:

这将返回完整的表格:

> country  = 'hk' 
> dt[dt$country == country]

这将返回正确的子集:

> dt[dt$country == 'hk']

为什么会这样?这是否意味着我不能基于另一个变量对数据帧进行子集化?

2 个答案:

答案 0 :(得分:1)

如果OP正在对rows的{​​{1}}进行子集化,则两个选项都不正确,正确的选项将是data.frame索引。如果我们不放row, column,默认情况下它将被视为列索引。如果需要,,也可用于只有一列的地方。

drop=FALSE

如果是 dt[dt$country == country,, drop=FALSE] 对象

data.table

或者

setkey(dt, country)[country]
#  country
#1:      hk

数据

dt[country == get("country", envir = parent.frame())]
#    country
#1:      hk

答案 1 :(得分:0)

你必须在第二个命令中加上逗号,,然后它会给你正确答案,所有行的国家都是hk

    > country  = 'hk' 
    > dt[dt$country == country,]

此外,在以下命令中,您还必须输入逗号,

    > dt[dt$country == 'hk',]