首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用R中类列表列的真实性检验数据中的查找行

用R中类列表列的真实性检验数据中的查找行
EN

Stack Overflow用户
提问于 2013-11-06 00:14:04
回答 3查看 51关注 0票数 0

我有一个有两个列的dataframe,如:

代码语言:javascript
复制
> df
Col1     Col2
1,2,3    1
2,3      2
3        3
4        3
4,5      123
12       0
32       0

> class(df$Col1)
[1] "list"
> class(df$Col2)
[1] "integer"

>dput(df)
structure(list(Col1 = list(c(1,2,3), c(2,3), 3, 4, c(4,5), 12, 32), 
               Col2 = c(1L, 2L, 3L, 3L, 123L, 0L, 0L),..., class=data.frame)

如何创建只包含Col1包含2或3行的df子集?IE:

代码语言:javascript
复制
> dfss
Col1    Col2
1,2,3   1
2,3     2
3       3

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-11-06 00:32:14

代码语言:javascript
复制
> df[ sapply(df$Col1,function(x) any(2:3 %in% x)) , ]
     Col1 Col2
1 1, 2, 3    1
2    2, 3    2
3       3    3
票数 1
EN

Stack Overflow用户

发布于 2013-11-06 00:24:02

代码语言:javascript
复制
dfss <- df[ grepl("2" , df[ ,1])| grepl("3" , df[ ,1]) , ]
票数 0
EN

Stack Overflow用户

发布于 2013-11-06 00:30:01

简而言之:如果您正在处理字符串,请查看subsetgrepl

下面是我读取数据并假设值类型为string的方式,否则您可以删除stringsAsFactors并将其强制到您想要的类型。

代码语言:javascript
复制
> df <- read.table(text="
+ 1,2,3    1
+ 2,3      2
+ 3        3
+ 4        3
+ 4,5      123", col.names = c("Col1", "Col2"), stringsAsFactors=FALSE)
> # This is the key
> result <- subset(df, grepl("2", Col1) | grepl("3", Col1)) 
> df
Col1 Col2
1 1,2,3    1
2   2,3    2
3     3    3
4     4    3
5   4,5  123
> result
Col1 Col2
1 1,2,3    1
2   2,3    2
3     3    3
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19801672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档