varias una tablas tabla seleccionar insertar graficos graficas filas eliminar elegir data como columnas columna r data.table mapply

una - R data.table aplica la función a las filas usando columnas como argumentos



tablas en r (3)

La forma más elegante que he encontrado es con 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

Tengo los siguientes 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"))

Me gustaría aplicar una función a cada fila de la data.table . La función func.test usa args f1 y f2 y hace algo con ella y devuelve un valor computado. Supongamos (como ejemplo)

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

pero mi función real es más compleja y hace bucles y todo, pero devuelve un valor computado. ¿Cuál sería la mejor manera de lograr esto?


La mejor manera es escribir una función vectorizada, pero si no puedes, entonces quizás esto hará:

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


Podemos definir filas con la función .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)