Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.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
如何使%in%与R中的字符一起工作?_R_String - Fatal编程技术网

如何使%in%与R中的字符一起工作?

如何使%in%与R中的字符一起工作?,r,string,R,String,来自Python背景,请参见R文档中的示例: #%in% is a more intuitive interface as a binary operator, #which returns a logical vector indicating if #there is a match or not for its left operand. 1:10 %in% c(1,3,5,9) [1] TRUE FALSE TRUE FALSE TRUE FALSE FALSE FAL

来自Python背景,请参见R文档中的示例:

 #%in% is a more intuitive interface as a binary operator, 
 #which returns a logical vector indicating if 
 #there is a match or not for its left operand.

1:10 %in% c(1,3,5,9)
[1]  TRUE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE
我正在尝试将字符串转换为列表:

"(" %in% as.list("(62473575, 62474092)")  # does not work 

"(" %in% strsplit("(62473575, 62474092)", "") # kind of works half way
并获取
FALSE
。发生了什么事


PS:我不想使用grep,(1)因为它将“
”(“
”视为一个特殊字符,(2)我正在寻找精确匹配,而不是正则表达式。

我假设您希望找到字符串中“')”字符的位置

您的
strsplit
方法存在两个问题。
您将%中
%的参数反转,并且
strsplit
返回一个列表

unlist(strsplit("(62473575, 62474092)", "")) %in% ')'
## [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
等价地,因为在右侧有一个元素:

unlist(strsplit("(62473575, 62474092)", "")) == ')'
另一方面,如果您想查看字符串向量中是否存在“'),则可以对
strsplit
的返回值使用
sapply
,它返回向量列表,每个向量都是输入向量中每个字符串的拆分值:

x <- c('abc', 'ab(cd)')
sapply(strsplit(x, ''), FUN=function(y) ')' %in% y)
## [1] FALSE  TRUE

请注意
固定了
参数。

我假设您希望找到字符串中“')字符的位置

您的
strsplit
方法存在两个问题。
您将%
%的参数反转,并且
strsplit
返回一个列表

unlist(strsplit("(62473575, 62474092)", "")) %in% ')'
## [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
等价地,因为在右侧有一个元素:

unlist(strsplit("(62473575, 62474092)", "")) == ')'
另一方面,如果您想查看字符串向量中是否存在“'),则可以对
strsplit
的返回值使用
sapply
,它返回向量列表,每个向量都是输入向量中每个字符串的拆分值:

x <- c('abc', 'ab(cd)')
sapply(strsplit(x, ''), FUN=function(y) ')' %in% y)
## [1] FALSE  TRUE

注意
固定的
参数。

您必须使用
grep
。只需escape“(
grep(\\(”,“(62473575,62474092)”)
我正在寻找“(”与元素“(”?它为什么失败以及如何修复它?请注意,
c(1,3,5,9)
是四个元素的向量。
(62473575,62474092)”
是一个长度为一的字符串。我猜:您想要
strsplit((62473575,62474092)“,”)[[1]]
“为什么这么复杂?”是一个很长的对话。这里有两个部分:(1)R的字符串处理范例可以说不如Python的方便;(2)R的字符串处理范例与Python的不同。“为什么用y语言做x这么难?”通常表明您无法在语言之间切换习惯用法。您必须使用
grep
。只需escape”(“如下:
grep(\\\(,“(62473575,62474092)”)
我在寻找“(”与元素(“)的精确匹配?为什么它会失败以及如何修复它?请注意
c(1,3,5,9)
是四个元素的向量。
“(6247357562474092)”
是一个长度为一的字符串。我猜:你想要
strsplit((6247357562474092)”,”)[[1]
“它为什么这么复杂?”是一个很长的对话。这里有两个部分:(1)R的字符串处理范例可以说不如Python的方便;(2)R的字符串处理范例不同于Python的“为什么在语言y中执行x如此困难?”通常表明您无法在语言之间切换习惯用法。