Size: a a a

R (язык программирования)

2021 May 07

DK

Dm Kb in R (язык программирования)
да, и вся идея состоит в том, чтобы не применить к ней функцию , но оставить в табличке
источник

PU

Philipp Upravitelev in R (язык программирования)
тогда так
tg_cols <- names(my_dt)[sapply(my_dt, is.numeric)]
my_dt[, (tg_cols) := lapply(.SD, log), .SDcols = tg_cols]
источник

DK

Dm Kb in R (язык программирования)
таки да, уже разобрали этот вариант по косточкам ))
источник

ГД

Григорий Демин... in R (язык программирования)
Небольшой есть фронт-енд к data.table - maditr
Там есть функция let_all для таких операций:
library(maditr)
iris = let_all(iris, if(is.numeric(.x)) log(.x))
источник

DK

Dm Kb in R (язык программирования)
или еще вариант-чемпион:
источник

M

Max in R (язык программирования)
Ребят, а ведь если в процессе выполнения выражения, которое является аргументом для try() вылетает ошибка в консоли, то код все равно не прервется?
источник

ЮМ

Юта Мата Ссс... in R (язык программирования)
Сравните два примера:

if(TRUE)
{
 print('a')
 try(sum("a"))
 print('b')
}

if(TRUE)
{
 print('a')
 sum("a")
 print('b')
}
источник

ЮМ

Юта Мата Ссс... in R (язык программирования)
выдачу сообщения об ошибке в консоль можно убрать.
Для этого у функции try, есть аргумент silent.

try(sum("a"), silent = TRUE)
источник

M

Max in R (язык программирования)
Да, спасибо!!
источник

IS

Ilya Shutov in R (язык программирования)
для пайпов советую поглядеть https://purrr.tidyverse.org/reference/safely.html
источник

EP

Ed P in R (язык программирования)
ИМХО игнорировать ошибки - так себе решение. Есть же trycatch с нормальной обработкой ошибок (ну хотя бы в консоль вывести, что что-то не посчиталось)
источник

ЮМ

Юта Мата Ссс... in R (язык программирования)
Да, пожалуй вы правы. Я забыл оставить предостережение, что прятать ошибки нужно осознанно.

Но в некоторых ситуациях, сообщение об ошибке действительно не нужно выводить — нужно лишь знать, операция выполнилась успешно или нет. И в зависимости от этого пустить выполнение скрипта по соответствующей ветке, без фактической остановки и вывода ошибки.
Что-то а-ля:

foo <-  try(your_expression, silent = TRUE)
if(class(foo) == "try-error") {
 # do something
} else {
 # do something other
}
источник

ИП

Иван Поздняков... in R (язык программирования)
А еще есть классные функциональные наречия в purrr: safely/probably/quietly!
источник

ЮМ

Юта Мата Ссс... in R (язык программирования)
Их как раз @iMissile парой сообщений выше скинул
источник

ИП

Иван Поздняков... in R (язык программирования)
Ой да
источник

AS

Alexander Semenov in R (язык программирования)
Я тут неделю назад посмеивался со статьи на Хабре, где чел 4 раза собеседовался на разработчика в Яндексе и 4 раза решал +/- одни и те же задачи на алгоритмы, а к самому только что пришла подопечная с вопросом как в R сравнить попадание чисел из одного вектора в диапазон, заданный двумя другими векторами, и понял я, что рано мне над такими вещами смеяться... =(
источник

AS

Alexander Semenov in R (язык программирования)
И самое обидное, что подопечная-то эту задачку решила через жутко медленный двойной цикл, а я вот сижу и думаю: упарываться ли мне дальше или завтра утром как обычно осенит на свежую голову.
источник

ЮМ

Юта Мата Ссс... in R (язык программирования)
а можно пример?
источник

ДВ

Дмитрий Володин... in R (язык программирования)
А можно нагляднее?))
источник

ЮМ

Юта Мата Ссс... in R (язык программирования)
что-то тоже захотелось упороться
источник