在R中,如果我的数据框中有一个列,每个行条目都包含一个列表,那么如何在该列表中搜索包含匹配项的那些行?
例如,如何在以下内容中返回包含"Algebra"(例如第1行和第3行)的行的索引:
> df[1:3,]$classes
[[1]]
[1] "Algebra" "Calculus"
[[2]]
[1] "Geometry"
[[3]]
[1] "Geometry" "Quantum Mechanics" "Algebra"
Run Code Online (Sandbox Code Playgroud)
我们可以使用sapply循环遍历list,使用grepl获取逻辑向量,wrap with any只返回TRUE/FALSE每个list元素的单个值.
sapply(df[1:3,]$classes, function(x) any(grepl('Algebra', x)))
#[1] TRUE FALSE TRUE
Run Code Online (Sandbox Code Playgroud)
或者我们可以使用每个元素%in%只返回一个.TRUE/FALSElist
sapply(df[1:3,]$classes, '%in%', x='Algebra')
#[1] TRUE FALSE TRUE
Run Code Online (Sandbox Code Playgroud)
另一种选择是 is.element
sapply(df[1:3,]$classes, is.element, el='Algebra')
#[1] TRUE FALSE TRUE
Run Code Online (Sandbox Code Playgroud)
或者@Richard Scriven提到的,==可以使用
sapply(df[1:3,]$classes, function(x) any(x == "Algebra"))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
104 次 |
| 最近记录: |