R data.table применяет функцию к строкам с использованием столбцов в качестве аргументов

У меня есть следующие data.table

 x = structure(list(f1 = 1:3, f2 = 3:5), .Names = c("f1", "f2"), row.names = c(NA, -3L), class = c("data.table", "data.frame")) 

Я хотел бы применить функцию к каждой строке data.table . Функция func.test использует args f1 и f2 и делает что-то с ней и возвращает вычисленное значение. Предположим (в качестве примера)

 func.text <- function(arg1,arg2){ return(arg1 + exp(arg2))} 

но моя реальная функция сложнее и делает циклы и все, но возвращает вычисленное значение. Какой был бы лучший способ сделать это?

Лучший способ – написать векторизованную функцию, но если вы этого не сделаете, возможно, это будет сделано:

 x[, func.text(f1, f2), by = seq_len(nrow(x))] 

Мы можем определить строки с .I функцией.

 dt_iris <- data.table(iris) dt_iris[, ..I := .I] ## Let's define some function some_fun <- function(dtX) { print('hello') return(dtX[, Sepal.Length / Sepal.Width]) } ## by row dt_iris[, some_fun(.SD), by = ..I] # or simply: dt_iris[, some_fun(.SD), by = .I] ## vectorized calculation some_fun(dt_iris) 

Самый элегантный способ, который я нашел, – это mapply :

 x[, value := mapply(func.text, f1, f2)] x # f1 f2 value # 1: 1 3 21.08554 # 2: 2 4 56.59815 # 3: 3 5 151.4132 
  • Ошибка ".onLoad failed в loadNamespace () для 'tcltk'"
  • Найти имя файла из полного пути к файлу
  • R + ggplot: отображение нескольких страниц
  • Как найти длину строки в R?
  • Самый быстрый способ найти второе (третье ...) наивысшее / наименьшее значение в векторе или столбце
  • R форматов данных: RData, Rda, RDS и т. Д.
  • Локальная долгота Координаты с кодом состояния в R
  • Интерфейс C # - R
  • Выполните полусоединение с data.table
  • Почему вы не можете использовать кванторы повторения в нулевой ширине за утверждениями
  • Повторить data.frame N раз
  • Interesting Posts

    Несколько сеансов RDP на одном компьютере?

    srand () – зачем вызывать его только один раз?

    Как сравнить один образ с другим, чтобы увидеть, похожи ли они на определенный процент, на iPhone?

    ASP.NET MVC – сеанс имеет значение null

    Как измерить производительность диска?

    Как увеличить пространство между полосками на штриховом участке в ggplot2?

    В чем разница между сном и спящим?

    Является ли размер структуры требуемым, чтобы быть точным кратным выравниванию этой структуры?

    Какова цель сериализации в Java?

    сжатие и декомпрессия строковых данных в java

    Веб-сокеты делают ajax / CORS устаревшими?

    Как изменить значок по умолчанию в SearchView, который будет использоваться в панели действий на Android?

    Как узнать, какие из моих ноутбуков работают в играх?

    Можно ли обновить Windows 10 как образ ISO (чтобы сделать загрузочный установочный диск)?

    Проблема с кодировкой Java FileReader

    Давайте будем гением компьютера.