【发布时间】:2016-11-23 17:54:30
【问题描述】:
我有一个由字符串 (character) 和字符串列表组成的数据框 df。让我们举个例子:
Name Nationality
'Alice' "USA"
'Bob' "MEX"
'Eve' c("USA", "MEX")
即:
> dput(df)
structure(list(Name = c("Alice", "Bob", "Eve"), Nationality = list( "USA", "MEX", c("USA", "MEX"))), .Names = c("Name", "Nationality"), row.names = c(1L, 2L, 3L), class = "data.frame")
如何提取具有至少“MEX”作为国籍的所有行?
预期输出:
Name Nationality
'Bob' "MEX"
'Eve' c("USA", "MEX")
编辑:我试过了:
-
df[df$Nationality == "MEX", ],但它只返回 Bob。 -
df[df$Nationality %in% "MEX",]但只返回 Bob 。 (同上... %in% c("MEX"),]) -
df["MEX" %in% df$Nationality,]返回所有值,就像df[is.element("MEX", df$Nationality),]
只有df[grep("MEX", df$Nationality), ] 工作...
【问题讨论】:
-
如果第三个条目是“USA, MEX”,即
df[grep("MEX", df$Nationality), ],则使用grep。请使用dput显示示例 -
如果您检查代码,它正在执行
subset -
@akrun 是的,确实如此(因此您的代码正在解决我的问题)。谢谢你!我将编辑我的问题以提供可重现的示例。