我的数据框有两列Link
和Value
。 Link
列的值类似于" abcd.com/efgh/ijkl/mnop"并且是一个URL。这帧中有10,000行,我从100,000行样本中获取。
现在我想在最后一次" /"之后提取数据。从左到右或第一个" /"从右到左。因此,例如在上面显示的示例中,我将提取" mnop"
我想对Link
列中的所有10,000行执行此操作,而Value
列不应生效。
我能够使用
a = sapply(webdatatest, substring, 36)
但这不是一个动态的方法,因为最后的位置" /"会改变。这也影响了第二列。
所以需要一些帮助。
答案 0 :(得分:7)
试试basename()
。它
删除所有路径,包括最后一个路径分隔符(如果有)。
basename("abcd.com/efgh/ijkl/mnop")
# [1] "mnop"
它是矢量化的,所以你可以将整列放在那里。
basename(rep("abcd.com/efgh/ijkl/mnop", 3))
# [1] "mnop" "mnop" "mnop"
因此,要将其应用于数据框link
的一列webdata
,您只需执行
webdata$link <- basename(webdata$link)
另一个显而易见的功能是sub()
,但我认为basename()
可以解决问题,而且更容易。
sub(".*/", "", rep("abcd.com/efgh/ijkl/mnop", 3))