使用gsub或类似函数将一个字符变量替换为另一字符变量的一部分

时间:2018-09-19 13:28:45

标签: r string gsub

我希望这是一个简单的问题。

我有两个变量,我想从另一个变量中取出一个字符串,基本上是要获取第二个变量中剩下的任何东西

variable1='test'
variable2='test2'
wantedresult='2'

newdf=as.data.frame(cbind(variable1,variable2,wantedresult))

如果gsub处理2列,我会用它,但是第一个参数必须是字符串而不是变量

gsub(newdf$variable2,'',newdf$variable1)

还有另一种方法吗? 谢谢

2 个答案:

答案 0 :(得分:0)

如果有多行,则必须使用一种可以对操作进行矢量化的技术。这是使用mapply的示例。

# Create example data frame
variable1 <- c('test', 'bus')
variable2 <- c('test2', 'bus3')
wantedresult <- c('2', '3')

newdf <- data.frame(variable1, variable2, wantedresult, stringsAsFactors = FALSE)
newdf
#   variable1 variable2 wantedresult
# 1      test     test2            2
# 2       bus      bus3            3

# Apply the gsub function using mapply
mapply(gsub, pattern = newdf$variable1, replacement = "", x = newdf$variable2)
# test  bus 
# "2"  "3"

答案 1 :(得分:0)

这里是data.table

的一个选项
# data
variable1 <- 'test'
variable2 <- 'test2'
newdf <- as.data.frame(cbind(variable1,variable2))
# solution
library(data.table)
setDT(newdf)[, wantedresult := gsub(variable1, '', variable2, fixed = TRUE)]
newdf # output
  variable1 variable2 wantedresult
1:      test     test2            2