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

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

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

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

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

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

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

0
Adam Sanders 19 Сен 2018 в 16:28

2 ответа

Лучший ответ

Если у вас несколько строк, вы должны использовать метод векторизации операции. Вот пример использования 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"
0
www 19 Сен 2018 в 13:40

Вот вариант с 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
nghauran 19 Сен 2018 в 13:43