Использование gsub или аналогичной функции для замены одной символьной переменной частью другой символьной переменной - PullRequest
0 голосов
/ 19 сентября 2018

Надеюсь, это простой вопрос.

У меня есть две переменные, я хочу извлечь строку одной переменной из другой, в основном, чтобы получить все остальное, что осталось во 2-й переменной

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

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

Если бы gsub работал с 2 столбцами, я бы использовал это, но первый аргумент должен быть строкой, а не переменной

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

Есть ли другой способ сделать это?Спасибо

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

Вот вариант с 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
0 голосов
/ 19 сентября 2018

Если у вас есть несколько строк, вы должны использовать технику, которая может векторизовать операцию.Вот пример использования 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"
...