Применение функции к таблице data.table и сохранение результатов в списке - PullRequest
0 голосов
/ 13 июля 2020

У меня есть таблица данных в следующем формате:

ColName  xvalue   yvalue

Column1  5       10
Column2  3        5
Column3  2        4

Я определил функцию следующим образом:

opt <- function (x,y){
return(x+y)
}

Я хочу применить функцию к каждой строке data.table и сохраните полученное значение в списке, как показано ниже:

x
$column1
[1]15

$column2
[1]8

$column3
[1]6

По сути, я применяю функцию, которая принимает каждую строку таблицы data.table в качестве входных параметров и сохраняет выходные данные как члены список. Есть ли способ сделать это data.table? Спасибо!

Ответы [ 3 ]

2 голосов
/ 13 июля 2020

Вы можете просто сделать,

split(rowSums(df[-1]), df$ColName)

#$Column1
#[1] 15

#$Column2
#[1] 8

#$Column3
#[1] 6
1 голос
/ 14 июля 2020

Можно применить opt, а затем использовать as.list

with(df1, as.list(setNames(opt(xvalue, yvalue), ColName)))
#$Column1
#[1] 15

#$Column2
#[1] 8

#$Column3
#[1] 6

данные

df1 <- structure(list(ColName = c("Column1", "Column2", "Column3"), 
    xvalue = c(5L, 3L, 2L), yvalue = c(10L, 5L, 4L)), 
    class = "data.frame", row.names = c(NA, 
-3L))
0 голосов
/ 13 июля 2020

Вы можете использовать Map для вывода в виде списка:

setNames(Map(opt, df$xvalue, df$yvalue), df$ColName)

#$Column1
#[1] 15

#$Column2
#[1] 8

#$Column3
#[1] 6
...