【发布时间】:2019-09-06 04:27:47
【问题描述】:
我有一个包含过滤器的表格,例如
> X = data.frame(filter1=c(1,1,1),filter2=c(1,1,0),filter3=c(1,0,0))
> X
filter1 filter2 filter3
1 1 1 1
2 1 1 0
3 1 0 0
我喜欢根据条件选择过滤器:
> selected_filters = c(1:2)
> X[,paste0("filter",c(selected_filters))]
filter1 filter2
1 1 1
2 1 1
3 1 0
但是,如果我只选择了一列,数据框将转换为列表
> selected_filters = c(2)
> X[,paste0("filter",c(selected_filters))]
[1] 1 1 0
如何只选择一列将结果保留为数据框?期望的结果看起来像
filter2
1 1
2 1
3 0
【问题讨论】:
-
问题的一部分实际上是试图找到正确的文档,因为对于方括号语法
X[...]不能使用语法?[]寻求帮助并不明显。正如@acrun 在他的回答中指出的那样,应该寻求语法?Extract的帮助。 -
我们可以像使用任何其他功能一样获得帮助:
?"["将带我们到 Extract 手册。同样?"+"会带我们去算术等 -
请注意,您可以在建议的解决方案中使用
selected_filters而不是c(selected_filters)。