Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.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中的一个函数模拟MySQL中的“LIKE”(更新)_Mysql_R_Sql Like - Fatal编程技术网

R中的一个函数模拟MySQL中的“LIKE”(更新)

R中的一个函数模拟MySQL中的“LIKE”(更新),mysql,r,sql-like,Mysql,R,Sql Like,我需要一个R中的函数,它模仿的功能 我需要相互验证SQL查询和R脚本的结果。如果我有一个函数可以模仿LIKE,great的功能,这会减少我的工作量 我在上面的链接中添加了LIKE的一些行为。正如您所看到的,LIKE与标准grep regex有很多不同之处 喜欢链接中的描述 使用SQL简单正则表达式比较的模式匹配。返回1 TRUE或0 FALSE。 根据SQL标准,LIKE按每个字符执行匹配,因此它可以生成不同于=比较运算符的结果: 尾随空格很重要 使用LIKE,可以在模式中使用以下两个通配符。

我需要一个R中的函数,它模仿的功能


我需要相互验证SQL查询和R脚本的结果。如果我有一个函数可以模仿LIKE,great的功能,这会减少我的工作量

我在上面的链接中添加了LIKE的一些行为。正如您所看到的,LIKE与标准grep regex有很多不同之处

喜欢链接中的描述

使用SQL简单正则表达式比较的模式匹配。返回1 TRUE或0 FALSE。 根据SQL标准,LIKE按每个字符执行匹配,因此它可以生成不同于=比较运算符的结果: 尾随空格很重要 使用LIKE,可以在模式中使用以下两个通配符。 字符描述 %匹配任意数量的字符,甚至零个字符 _正好匹配一个字符 在MySQL中,数字表达式上允许使用LIKE。这是标准SQL-LIKE的扩展

mysql>选择10,如“1%”; ->一,

试试?grepl还是包sqldf

df=data.frame(A=c("mytext_is_here","anothertext_is_here","mytext_is_also_here"),B=1:3)
df

firstSolution = subset(df, grepl("^mytext", A))

library("sqldf")
secondSolution = sqldf("select * from df where A like 'mytext%'")
来源:第8页,共

尝试sqldf包。您可以在data.frame上编写类似sql的查询

例如:

require(sqldf)
data(CO2)

new.data <- sqldf("select * from CO2 where Plant like 'Qn%'")

我想你也可以用R中的grepl函数来做同样的事情。 grepl进行部分字符串匹配,它将返回一个逻辑向量,您可以稍后使用该向量将数据与其他条件一起子集

你以后也可以用“!”在grepl前面签名以过滤出具有该表达式的结果

ex. sample=c("data","ddata","ddata1")
filtered_data=grepl("dd",sample)
# it gives a logical vector FALSE TRUE TRUE

#and it can be used as follows to find out all the elements that have a string "dd" in it.
sample[grepl("dd",sample)]

请注意grepl是区分大小写的。

我说的是R,但不幸的是不是MySQL。因为你没有解释LIKE到底做了什么,所以能帮助你的人就少了。LIKE不做近似的字符串匹配,所以agrep不太合适。我在上面编辑的问题中更详细地描述了函数。您正在寻找不存在的东西。如果你真的想去麦当劳,你不会去寻找像汉堡王这样的替代品:你只要去麦当劳就行了。所以,如果你更乐意的话,可以使用sql、sqldf或编写自己的代码。我需要相互验证sql查询和R脚本的结果。如果我有一个函数可以模仿LIKE,great的功能,这会减少我的工作量,搜索SQLite语法:我知道sqldf。然而,出于合理的原因,我不能在这里详细介绍,我不想编写类似SQL的查询。如果我想这样做,我可以自己运行精确的SQL查询?很抱歉,需要相互验证SQL查询和R脚本的结果,这有点不明确。如果我有一个函数来模拟LIKE,great的功能,这会减少我的worklaod.sqldf,而不是一个选项,那么我不想运行sql或类似sql的查询。grepl很接近,但并不完全模仿这种行为。它也没有矢量化,模式总是原子的。我想我得自己写这个函数。