qnhant5010
qnhant5010

Reputation: 305

Add dynamically multiple columns to data table

Given a data table with 3 columns (the first two form the key), I'm trying to add a bunch of columns x_k with k running from 1 to N

df
>    a    b    c 
1:   1    1    1
2:   1    2    1
3:   1    3    2

For each new column x_k, its value is calculated by the equation cos(2 * pi * c / k) grouped by a and b.

My approach doesn't seem to work: generating a list of column names then parsing it

df[, eval(parse(text = paste0(paste0("x_", 1:N), " := cos(2 * pi * c / ", 1:N, ")"))), by = .(a,b)]

R said c not found. How should i correct my approach other than looping through list of column names ?

Upvotes: 0

Views: 262

Answers (1)

chinsoon12
chinsoon12

Reputation: 25225

Maybe try something like:

df[, paste0("x_", 1L:N) := lapply(1L:N, function(k) cos(2 * pi * c / k)), .(a, b)]

Upvotes: 4

Related Questions