我的角色载体中有与棒球运动员有关的部分链接:
teamplayerlinks <- c(
"/players/i/iannech01.shtml",
"/players/l/lindad01.shtml",
"/players/c/canoro01.shtml"
)
我想在第3个/
符号之后和.sthml
部分之前隔离字母/数字。我想要我的结果字符串:
desiredlinks
# [1] "iannech01" "lindad01" "canoro01"
我认为这可能是sub
的工作,但经过多次试验和错误后,我很难学习逃避和角色序列。我知道可以通过两次sub
调用来删除前后部分,但我宁愿完成此操作以动态处理其他链接。
提前感谢任何回复的人 - 我仍然在学习R并且每天都在努力变得更好。
答案 0 :(得分:3)
你可以尝试
gsub(".*/|\\..*$", "", teamplayerlinks)
# [1] "iannech01" "lindad01" "canoro01"
我们有
.*/
删除所有内容,包括最后一个/
|
或\\..*$
删除.
之后的所有内容,从字符串顺便说一句,这些看起来有点像拉赫曼棒球数据集中给出的玩家ID。如果是这样,您可以使用R中的 Lahman 包而不必刮网。它有许多棒球数据集。它可以与install.packages("Lahman")
一起安装。我还写了一个包 retrosheet ,用于从retrosheet.com下载数据集。它也在CRAN上。看看吧!
答案 1 :(得分:2)
basename
功能在这里很有用。
gsub("\\.shtml", "", basename(teamplayerlinks))
# [1] "iannech01" "lindad01" "canoro01"
答案 2 :(得分:2)
这也可以在没有正则表达式的情况下完成
tools::file_path_sans_ext(basename(teamplayerlinks))
#[1] "iannech01" "lindad01" "canoro01"