首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查多个条件

检查多个条件
EN

Stack Overflow用户
提问于 2011-06-04 04:09:12
回答 2查看 796关注 0票数 1

我有一个数据框,想知道某个字符串是否存在。我想知道df,1中的任何值是否包含来自inscompany的任何内容。

代码语言:javascript
复制
df = data.frame(company=c("KMart", "Shelter"), var2=c(5,7))
if( df[,1] == inscompany ) print("YES")
inscompany <- c("21st Century Auto Insurance", "AAA Auto Insurance", "AARP Auto Insurance",
        "Allstate Auto Insurance", "American Family Auto Insurance", "Eastwood Auto Insurance",
        "Erie Auto Insurance", "Farmers Auto Insurance", "GMAC Auto Insurance", "Hartford Auto Insurance",
        "Infinity Auto Insurance", "Mercury Auto Insurance", "Nationwide Auto Insurance", "Progressive Auto Insurance",
        "Shelter Insurance Company", "Titan Auto Insurance", "Travelers Auto Insurance", "USAA Auto Insurance")

我收到一条错误消息,它只能将inscompany的第一个值检查为df,1。

帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-04 04:13:19

你想要%in%。下面是一个示例:

代码语言:javascript
复制
R> chk <- c("A", "B", "Z")    # some text
R> chk %in% LETTERS[1:13]     # check for presence in first half of alphabet
[1]  TRUE  TRUE FALSE
R> 

match()函数是相关的,有关详细信息,请参阅帮助页面。

票数 6
EN

Stack Overflow用户

发布于 2011-06-04 10:36:32

我认为match%in%不适用于部分匹配。grepl根据目标字符串是否包含给出逻辑(TRUE/FALSE)结果;我使用^只在字符串的开头进行匹配(您可能不需要这样做)。要扩展到多对多匹配,需要anysapply。如果您只想知道是否有任何字符串匹配,则需要在整个过程中再添加一个any

代码语言:javascript
复制
 sapply(df$company,function(x) any(grepl(paste("^",x,sep=""),inscompany)))
[1] FALSE  TRUE
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6232108

复制
相关文章

相似问题

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