использовать sapply для столбца фрейма данных? - Р - PullRequest
0 голосов
/ 16 июня 2020

У меня есть этот фрейм данных:

df=data.frame("fg"=c("bv65","bv89"),"gh"=c(87,21))

, и мне нужно удалить подстроку «bv» в столбце «fg». Я сделал это так:

sapply(df$fg,FUN=gsub(pattern="bv",replacement = "",x=df$fg))

, но получаю такую ​​ошибку:

Ошибка в match.fun (FUN): 'gsub (pattern = "bv", replacement = "", x = df $ fg) 'не является функцией, символом или символом

Почему?

Ответы [ 2 ]

1 голос
/ 16 июня 2020

sub / gsub векторизованы. Вы можете использовать их для всех значений в столбце. Возможно, вы также захотите преобразовать значения в numeri c.

df$fg <- as.numeric(sub('bv', '', df$fg))
df
#  fg gh
#1 65 87
#2 89 21
0 голосов
/ 16 июня 2020

Решение Ронака - это путь к go, поскольку gsub() / sub() может работать с векторами. Но если вы хотите узнать, чего не хватает в вашем текущем подходе:

sapply(df$fg, FUN = function(x) sub(pattern="bv", replacement="", x))
# Or simply
sapply(df$fg, sub, pattern="bv", replacement="")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...