Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.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/9/silverlight/4.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
使用regex查找上一个句点左右的值,并在dplyr中分开_R_Dplyr_Regex Lookarounds - Fatal编程技术网

使用regex查找上一个句点左右的值,并在dplyr中分开

使用regex查找上一个句点左右的值,并在dplyr中分开,r,dplyr,regex-lookarounds,R,Dplyr,Regex Lookarounds,我有一个列名称如下的数据框: [127] "quiz.32.player.submitted_answer_private" "quiz.32.player.rescue_event" [129] "quiz.33.player.solution" "quiz.33.player.submitted_answer" [131] "quiz.33.player.s

我有一个列名称如下的数据框:

[127] "quiz.32.player.submitted_answer_private"         "quiz.32.player.rescue_event"                    
[129] "quiz.33.player.solution"                         "quiz.33.player.submitted_answer"                
[131] "quiz.33.player.submitted_answer_private"         "quiz.33.player.rescue_event"                    
[133] "partner_quiz.1.player.solution"                  "partner_quiz.1.player.submitted_answer"         
[135] "partner_quiz.1.player.submitted_answer_private"  "partner_quiz.1.player.rescue_event"             
[137] "partner_quiz.2.player.solution"                  "partner_quiz.2.player.submitted_answer"         
[139] "partner_quiz.2.player.submitted_answer_private"  "partner_quiz.2.player.rescue_event"      
我试图通过提取最后一个周期右边的值和左边的值来分离这些值。我的dplyr管道如下所示:

frame <- data %>%
  gather(k, value) %>%
  separate(k, into = c("quiz_number", "suffix"), sep = "\\.(?=player)")
帧%
聚集(k,值)%>%
分开(k,分为=c(“测验编号”,“后缀”),sep=“\\.(?=player)”)
出于某种原因,结果data.frame会忽略所有前缀为“partner”的列。你知道为什么吗

编辑:结果分割应在列
测验编号中包含上一期间左侧的所有内容(例如。

quick.32.player
partner\u quick.2.player
)以及在“后缀”列中,最后一个句点右侧的所有内容(例如
提交的答案\u private
解决方案

在regex lookaround中不使用“player”,而是对不属于
/code>的字符进行正匹配,直到结束字符串的(
$

library(dplyr)
library(tidyr)
data %>%
   gather(k, value) %>%
   separate(k, into = c("quiz_number", "suffix"), sep = "\\.(?=[^.]+$)")


在OP的代码中,它在“player”字符串前匹配
,但在“player”字符串后有
s,例如
quick.32.player.rescue\u event

你在42秒内回答了这个问题。你应该获得奖励。你知道我的正则表达式有什么问题吗?