Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.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_Regex_Strsplit - Fatal编程技术网

R 用于分隔包含大小写的字符串的正则表达式

R 用于分隔包含大小写的字符串的正则表达式,r,regex,strsplit,R,Regex,Strsplit,我无法让正则表达式任务正常工作,如果有人能帮忙,那就太好了。 我需要把基因名称和附加在它们上面的描述分开。使用出现在99%案例中的术语涉及将其从“基因卡摘要”中分离出来,可通过gene使用tidyverse解决。假设您的示例代表所有可能性,您拥有的是: 基因名称始终位于字符串的开头 它总是大写的,有时还有数字(可能是标点符号?) 有些情况下,基因名称与下一个句子合并,总是以大写字母开头,然后是小写字母 因此,一个解决方案是:提取每个字符串中的第一个单词,然后识别附加单词的大小写(大写字母后接

我无法让正则表达式任务正常工作,如果有人能帮忙,那就太好了。
我需要把基因名称和附加在它们上面的描述分开。使用出现在99%案例中的术语涉及将其从“基因卡摘要”中分离出来,可通过
gene使用tidyverse解决。假设您的示例代表所有可能性,您拥有的是:

  • 基因名称始终位于字符串的开头
  • 它总是大写的,有时还有数字(可能是标点符号?)
  • 有些情况下,基因名称与下一个句子合并,总是以大写字母开头,然后是小写字母
因此,一个解决方案是:提取每个字符串中的第一个单词,然后识别附加单词的大小写(大写字母后接小写字母)并删除它们。要继续使用软件包stringr:

library(stringr)

# Extract any characters before the first space:
fWord <- str_extract(example, '([^[:blank:]]+)')

# Find the index of strings that have lower cases:
ind <- grep('[:lower:]', fWord)

# Select everything until the first lower caseand remove the last character:
fWord[ind] <- str_sub(str_extract(fWord[ind], '([^[:lower:]]+)' ), end = -2)

> fWord
[1] "STAT1"     "PMS2DNA"   "FANCA"     "HAX1"      "ELANE"     "IL1RN"    
[7] "PRKDCT-B-" "MSH6"      "AP3B1FHL" 
库(stringr)
#提取第一个空格前的任何字符:

fWord假设你的例子代表了所有的可能性,你所拥有的是:

  • 基因名称始终位于字符串的开头
  • 它总是大写的,有时还有数字(可能是标点符号?)
  • 有些情况下,基因名称与下一个句子合并,总是以大写字母开头,然后是小写字母
因此,一个解决方案是:提取每个字符串中的第一个单词,然后识别附加单词的大小写(大写字母后接小写字母)并删除它们。要继续使用软件包stringr:

library(stringr)

# Extract any characters before the first space:
fWord <- str_extract(example, '([^[:blank:]]+)')

# Find the index of strings that have lower cases:
ind <- grep('[:lower:]', fWord)

# Select everything until the first lower caseand remove the last character:
fWord[ind] <- str_sub(str_extract(fWord[ind], '([^[:lower:]]+)' ), end = -2)

> fWord
[1] "STAT1"     "PMS2DNA"   "FANCA"     "HAX1"      "ELANE"     "IL1RN"    
[7] "PRKDCT-B-" "MSH6"      "AP3B1FHL" 
库(stringr)
#提取第一个空格前的任何字符:

你说的大写字母和小写字母到底是什么意思?描述并非总是以一个大写字母后跟小写字母开头(例如PMS2DNA修复缺陷SPMS2缺陷,我假设您希望在PMS2和DNA之间进行分割…)。我真的看不出有什么方法可以让正则表达式区分哪些大写字母来自基因,哪些来自描述。你没有一个清晰的模式来区分每种情况下的基因名称。你是如何得到这些数据的?通过文本识别?从其他来源提取?为什么基因名称不被空格或其他任何东西分开?如果可能的话,最好改变获取数据的方式,然后尝试在以后更正。我从我们的测序工具提供的html文件中获取数据。不幸的是,没有办法更好地隔离它们,所以我需要在消除它们之前,采用这种方法来发现违规行为。不好,不干净,但我想现实很少是…你说的大写字母小写字母到底是什么意思?描述并非总是以一个大写字母后跟小写字母开头(例如PMS2DNA修复缺陷SPMS2缺陷,我假设您希望在PMS2和DNA之间进行分割…)。我真的看不出有什么方法可以让正则表达式区分哪些大写字母来自基因,哪些来自描述。你没有一个清晰的模式来区分每种情况下的基因名称。你是如何得到这些数据的?通过文本识别?从其他来源提取?为什么基因名称不被空格或其他任何东西分开?如果可能的话,最好改变获取数据的方式,然后尝试在以后更正。我从我们的测序工具提供的html文件中获取数据。不幸的是,没有办法更好地隔离它们,所以我需要在消除它们之前,采用这种方法来发现违规行为。不好,不干净,但我想现实很少是…非常感谢卡洛斯,但还没有完全完成;有了这个,我得到了最后一个大写字母仍然附加在基因名称上(例如,IL1RNN代替IL1RN或STAT1P代替STAT1)。我怎样才能改变密码,让上面的和小的都被释放?这就是我在回答中的评论,Martijn已经在评论中发表了:如何区分属于基因名称的大写字母和属于下一个单词的大写字母?好的,现在我明白你想做什么了。我将编辑答案。即使您接受新的解决方案,我也强烈建议您编辑您的问题以使其更清楚。我可能错了,但POSIX字符类必须包含在括号内,如:
grep(“[:lower:]”,fWord)
,否则它将匹配文字字符
l
o
w
e
r
非常感谢卡洛斯,但还没有完成;有了这个,我得到了最后一个大写字母仍然附加在基因名称上(例如,IL1RNN代替IL1RN或STAT1P代替STAT1)。我怎样才能改变密码,让上面的和小的都被释放?这就是我在回答中的评论,Martijn已经在评论中发表了:如何区分属于基因名称的大写字母和属于下一个单词的大写字母?好的,现在我明白你想做什么了。我将编辑答案。即使您接受新的解决方案,我也强烈建议您编辑您的问题以使其更清楚。我可能错了,但POSIX字符类必须包含在括号内,如:
grep(“[:lower:]”,fWord)
,否则它将匹配文字字符
l
o
w
e
r
library(stringr)

# Extract any characters before the first space:
fWord <- str_extract(example, '([^[:blank:]]+)')

# Find the index of strings that have lower cases:
ind <- grep('[:lower:]', fWord)

# Select everything until the first lower caseand remove the last character:
fWord[ind] <- str_sub(str_extract(fWord[ind], '([^[:lower:]]+)' ), end = -2)

> fWord
[1] "STAT1"     "PMS2DNA"   "FANCA"     "HAX1"      "ELANE"     "IL1RN"    
[7] "PRKDCT-B-" "MSH6"      "AP3B1FHL"