Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何返回包含在r中单元格中的字符串中的关键字行_R_Subset - Fatal编程技术网

如何返回包含在r中单元格中的字符串中的关键字行

如何返回包含在r中单元格中的字符串中的关键字行,r,subset,R,Subset,我原以为这将是一行简单的代码,但解决我的挑战的办法是我逃避。我敢打赌,我在R编程领域有限的经验可能是原因 数据集 df <- structure(list(Key_MXZ = c(1731025L, 1731022L, 1731010L, 1730996L, 1722128L, 1722125L, 1722124L, 1722123L, 1722121L, 1722116L, 1722111L, 1722109L), Key_Event =

我原以为这将是一行简单的代码,但解决我的挑战的办法是我逃避。我敢打赌,我在R编程领域有限的经验可能是原因

数据集

 df <- structure(list(Key_MXZ = c(1731025L, 1731022L, 1731010L, 1730996L,       
     1722128L, 1722125L, 1722124L, 1722123L, 1722121L, 1722116L, 1722111L,      
     1722109L), Key_Event = c(1642965L, 1642962L, 1647418L, 1642936L,           
     1634904L, 1537090L, 1537090L, 1616520L, 1634897L, 1634892L, 1634887L,      
     1634885L), Number_Call = structure(c(11L, 9L, 10L, 12L, 1L, 3L,            
     2L, 4L, 5L, 6L, 8L, 7L), .Label = c("3004209178-2010-04468",               
     "3004209178-2010-04469", "3004209178-2010-04470", "3004209178-2010-04471", 
     "3004209178-2010-04472", "3004209178-2010-04475", "3004209178-2010-04477", 
     "3004209178-2010-04478", "3004209178-2010-04842", "3004209178-2010-04850", 
     "I wish to return this row with the header", "Maybe this row will work too"
     ), class = "factor")), .Names = c("Key_MXZ", "Key_Event", "Number_Call"    
     ), class = "data.frame", row.names = c("1", "2", "3", "4", "5",            
     "6", "7", "8", "9", "10", "11", "12"))  
我尝试了下面的代码变体和其他一些看不见的代码,以取得突破,但收效甚微

txt <- c("this row")
table1 <- df[grep(txt,df),]
table2 <- df[pmatch(txt,df),]
df[,3]<-is.logical(df[,3])
table3 <- subset(df,grep(txt,df[,3]))
txt与

df[grep("this row", df$Number_Call, fixed=TRUE),]

#  Key_MXZ Key_Event                               Number_Call
#1 1731025   1642965 I wish to return this row with the header
#4 1730996   1642936              Maybe this row will work too
只需要引用您希望grep尝试匹配的实际列


fixed=TRUE查找精确匹配,grep返回列表中匹配元素的索引。如果您的匹配有点细微差别,您可以将“this row”替换为与DMTs答案非常类似的正则表达式。下面使用data.table方法,该方法在有数百万行的情况下非常快速:

setDT(df); setkey(df, Number_Call)
df[grep("this row", Number_Call, ignore.case = TRUE)]

   Key_MXZ Key_Event                               Number_Call
1: 1731025   1642965 I wish to return this row with the header
2: 1730996   1642936              Maybe this row will work too

下面是一种使用
qdap
Search
功能的方法。它是agrep的包装器,因此可以进行模糊匹配,模糊度可以设置:

library(qdap)
Search(df, "this row", 3)

##   Key_MXZ Key_Event                               Number_Call
## 1 1731025   1642965 I wish to return this row with the header
## 4 1730996   1642936              Maybe this row will work too

谢谢你,泰勒。我想知道你运行的是什么版本的R和OS。我在R3.1.1/Win8上用qdap尝试了这种方法,得到了一条错误消息“loadNamespace中的错误”bc dplyr需要>=0.3版本。我尝试过更新dplyr,但不知什么原因,它仍然保持在.2。嗯,真糟糕。我想。您可以尝试在R-vanilla会话中运行
install.packages(“dplyr”,type=“source”)
(即,未加载dplyr)。我正在运行Win7R开发版本。但是它看起来像是
dplyr.3.0.1
在CRAN上,现在Windows的二进制文件将在几天内生成。我希望他们所经历的一些纠结会得到解决。如果您能够使用这种方法(即安装qdap),请您更新我。我希望看到qdap工作。因此,当我扩展代码时,我可能会再试一次。
install.packages(“dplyr”,type=“source”)
做了什么?它向安装添加了两个依赖项,并初始化了这些依赖项,以检查操作系统的体系结构并验证安装。一些警告会导致延迟加载(?)并安装dplyr。看起来它随后将其回滚到dplyr的早期版本。不管怎样,库(dplyr)可以工作——没有问题。但是,名称空间与库(qdap)冲突仍然存在。R CONSOLE 3.1.1的完整技术答案:[
library(qdap)
Search(df, "this row", 3)

##   Key_MXZ Key_Event                               Number_Call
## 1 1731025   1642965 I wish to return this row with the header
## 4 1730996   1642936              Maybe this row will work too