我有一个包含名为country
的列的数据框,我希望根据该列对表进行子集化。我尝试了以下方法:
这将返回完整的表格:
> country = 'hk'
> dt[dt$country == country]
这将返回正确的子集:
> dt[dt$country == 'hk']
为什么会这样?这是否意味着我不能基于另一个变量对数据帧进行子集化?
答案 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',]