我想对 R 数据框进行子集化,以显示包含特定值的所有行,这些值可能位于两列或更多列中。假设我有数据框df
HomeTeam AwayTeam
1 Barcelona Ajax
2 Madrid Liverpool
3 Arsenal Barcelona
4 Madrid Barcelona
5 ManU Arsenal
6 Ajax Porto
我只想显示包含“巴塞罗那”或“阿森纳”的行,即我想要得到
HomeTeam AwayTeam
1 Barcelona Ajax
2 Arsenal Barcelona
3 Madrid Barcelona
4 ManU Arsenal
我尝试对数据框进行子集化并合并 OR 条件 || ,如下所示:
df = df[df$HomeTeam %in% c("Barcelona", "Arsenal")
|| df$AwayTeam %in% c("Barcelona", "Arsenal"), ]
但它给出了一个错误。我做错了什么,如何实现预期结果?
正如评论中所提到的,| 是矢量化的,但 || 不是,所以如果你做出这样的改变,你的代码就会起作用,或者你可以尝试下面的其他替代方案,其中一些方案更短一些。
另外,通常最好不要
df
像 那样破坏df <- df[...]
,而是创建一个新的数据框df2 <- df[...]
。这将使调试更容易,因为您将知道始终df
是输入,并且df
和df2
将同时存在,因此您可以比较它们,这在调试期间很有用。@G. Grothendieck 给出了可靠的答案,所以这只是另一种选择:
干杯!