R搜索多个模式grepl

R搜索多个模式grepl,r,pattern-matching,grepl,R,Pattern Matching,Grepl,我有下面的代码。我想找到有字母数字值的单元格,它也应该忽略na或na单元格 我如何修改我的代码以达到这个目的?对于newcolumn,所需的R命令应返回以下结果 真,真,假,假,真,假,假 我尝试了命令3和命令4,但失败了:( =====================================更新1=============================== newcolumn2<-newcolumn[grepl("(?=(?i)na(N)?(*SKIP)(*F))|[[:aln

我有下面的代码。我想找到有字母数字值的单元格,它也应该忽略na或na单元格

我如何修改我的代码以达到这个目的?对于newcolumn,所需的R命令应返回以下结果

真,真,假,假,真,假,假

我尝试了命令3和命令4,但失败了:(

=====================================更新1===============================

newcolumn2<-newcolumn[grepl("(?=(?i)na(N)?(*SKIP)(*F))|[[:alnum:]]|(?=(?i)nan(*SKIP)(*F))|(?=(?i)null(*SKIP)(*F))", newcolumn, perl=TRUE)]
newcolumn2试试:

(?i)
表示不区分大小写。因此它应该匹配
na
na
na
,或
na
(*SKIP)(*F)
模式中的模式使匹配失败。现在
符号右侧的模式即
[:alnum:][/code>将是匹配的模式

更新
<代码>新列,您可能需要考虑将字符NA转换成实际的代码< Na/<代码>,因为这将使任务更容易。什么是实际NA?如何将NA转换为实际NA?<代码>是NA(C(1, 3,NA),“NA”,NA))。
只有最后一个是真的
NA
。另外两个是字符。我尝试不转换它们,而是在
read.table
函数中使用适当的参数(或者使用任何函数读取数据)。类似于
read.table(file=“dat.csv”,NA.strings=c(“999”,“NA”,“NA”))
请参见
?NA
了解有关
NA
s的更多信息。请解释(?=(?i)NA(*SKIP)(*F))是如何工作的…代码正在工作并给出所需结果如果我也想忽略“NaN”…我应该怎么做?我尝试了“grepl((?=(?i)NA(*SKIP)(*F))[:alnum:]| NaN”,newcolumn,perl=TRUE)…但它不起作用:(@user2543622你应该问一个新问题,这个问题已经问了一个月了,已经有人回答了
newcolumn2<-newcolumn[grepl("(?=(?i)na(N)?(*SKIP)(*F))|[[:alnum:]]|(?=(?i)nan(*SKIP)(*F))|(?=(?i)null(*SKIP)(*F))", newcolumn, perl=TRUE)]
 grepl("(?=(?i)na(*SKIP)(*F))|[[:alnum:]]", newcolumn, perl=TRUE)
 #[1]  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE
 newcolumn <- c(1,2,"na","NA","abc","","*", "NaN", "nan", "nAn")
 grepl("(?i)na(N)?(*SKIP)(*F)|[[:alnum:]]", newcolumn, perl=TRUE)
 # [1]  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE