я написал функцию, чтобы удалить все из первых скобок года в строке:избежать такого использования sapply в R data.table
until_parentheses <- function(string) {
one <- stringr::str_split_fixed(string, "\\(", 2)[1, 1]
res <- stringr::str_trim(one)
return(res)
}
И у меня есть data.table с колонкой, которая выглядит (что-то), как это:
messy <- paste(letters[1:10], paste0(c(" (", letters[1:2], ")"), collapse = ""))
dt <- data.table(messy)
Когда я пытаюсь использовать until_parentheses()
на грязной колонке, как так
dt[, ":=" (clean = until_parentheses(messy))]
Функция применяется только к первому элементу messy, а чистый столбец - результат, повторяемый 10 раз.
Для того, чтобы иметь чистый столбец выйти, как я хочу, чтобы я использую sapply:
dt[, ":=" (clean_2 = sapply(messy, until_parentheses))]
Это дает результат я хочу, однако это занимает много времени, чтобы работать, когда дт долго.
Я чувствую, что есть проблемы с моей функцией until_parenthese()
и с моим методом data.table. У кого-нибудь есть решение, которое делает излишним мое использование sapply в этом случае?
Спасибо!
Ваша функция написана так, что вы возвращаете только первый результат (строки). '[1, 1]' должно быть '[, 1]', а затем 'sapply()' не нужно –