使用gsub/regex在字符串中的名称周围加引号

使用gsub/regex在字符串中的名称周围加引号,r,regex,gsub,R,Regex,Gsub,我试过搜索,但找不到我想要做的事情。如果我疏忽了,我道歉。我试图获取一个长的字符串向量,所有字符串都具有相同的一般结构,并将它们放入data.frame中。结构如下: [1] "rank, team, record" [2] "1 Team 22-4" [3] "2 Long Team Name 20-6" 我最初的想法是使用gsub和regex表达式在团队名称周围放置/(例如/“Long team Name/”)然后使用read.table进行导入,但我在使用正则表达式进行导入时

我试过搜索,但找不到我想要做的事情。如果我疏忽了,我道歉。我试图获取一个长的字符串向量,所有字符串都具有相同的一般结构,并将它们放入data.frame中。结构如下:

[1]   "rank, team, record"
[2]   "1 Team 22-4"
[3]   "2 Long Team Name 20-6"
我最初的想法是使用gsub和regex表达式在团队名称周围放置/(例如/“Long team Name/”)然后使用read.table进行导入,但我在使用正则表达式进行导入时遇到了困难。这将允许我将字符串作为制表符分隔的字符串进行读取,对吗?如果有更简单的建议,我洗耳恭听

谢谢!
布莱恩我想这就是你想要的

library(stringi)

x = c("rank, team, record", "1 Team 22-4", "2 Long Team Name 20-6")

res = stri_replace_first_fixed(x, " ", "|")
res = stri_replace_last_fixed(res, " ", "|")

res = stri_split_fixed(res, pattern = "|", simplify = T)
#      [,1]    [,2]             [,3]    
# [1,] "rank," "team,"          "record"
# [2,] "1"     "Team"           "22-4"  
# [3,] "2"     "Long Team Name" "20-6"  

结果是一个矩阵,但您可以将其包装为.data.frame

我想这就是您想要的

library(stringi)

x = c("rank, team, record", "1 Team 22-4", "2 Long Team Name 20-6")

res = stri_replace_first_fixed(x, " ", "|")
res = stri_replace_last_fixed(res, " ", "|")

res = stri_split_fixed(res, pattern = "|", simplify = T)
#      [,1]    [,2]             [,3]    
# [1,] "rank," "team,"          "record"
# [2,] "1"     "Team"           "22-4"  
# [3,] "2"     "Long Team Name" "20-6"  

结果是一个矩阵,但您可以将其包装为.data.frame

您可以扩展您试图执行的操作吗?如果您将数据作为向量读入,听起来您只需要将向量包装为
data.frame()
使用
sub
用一些特殊字符替换第一个空格和最后一个空格,(比如说,
“|”
)然后在这个特殊字符上使用
strsplit
tidyr::separate
。你能扩展一下你想做的事情吗?如果你把数据作为向量读入,听起来你只需要将向量包装在
数据中。frame()
使用
sub
将第一个空格和最后一个空格替换为某些特殊字符(例如,
“|”
),然后在该特殊字符上使用
strsplit
tidyr::separate
。是的,这正是我需要的。非常感谢!是的,这正是我需要的。非常感谢!