R 将向量值应用于数据表

R 将向量值应用于数据表,r,data.table,R,Data.table,问这个问题我有点不好意思,但是我已经有几个月没有使用数据表了,我忘记了很多东西。我花了两个小时搜索文档,但没有成功。然而,这是一个微不足道的问题 我有这个数据表: DT = data.table(CJ(r=c(0,1,2),phi=c(1,2,3),theta=c(10,11,12))) DT > DT r phi theta 1: 0 1 10 2: 0 1 11 3: 0 1 12 4: 0 2 10 5: 0 2 1

问这个问题我有点不好意思,但是我已经有几个月没有使用数据表了,我忘记了很多东西。我花了两个小时搜索文档,但没有成功。然而,这是一个微不足道的问题

我有这个数据表:

DT = data.table(CJ(r=c(0,1,2),phi=c(1,2,3),theta=c(10,11,12)))
DT
> DT
    r phi theta
 1: 0   1    10
 2: 0   1    11
 3: 0   1    12
 4: 0   2    10
 5: 0   2    11
 6: 0   2    12
 7: 0   3    10
 8: 0   3    11
 9: 0   3    12
10: 1   1    10
11: 1   1    11
12: 1   1    12
13: 1   2    10
14: 1   2    11
15: 1   2    12
16: 1   3    10
17: 1   3    11
18: 1   3    12
19: 2   1    10
20: 2   1    11
21: 2   1    12
22: 2   2    10
23: 2   2    11
24: 2   2    12
25: 2   3    10
26: 2   3    11
27: 2   3    12
    r phi theta
如您所见,它有27行。现在我想对每一行应用一个向量值。天真地:

f <- function(r, phi, theta) (2*r, 2*phi 3*theta)

结果有81列。这不是我想要的。我想要27列,每个列有3个值。请怎么做?

首先,让f返回一个列表:

f <- function(r, phi, theta) list(2*r, 2*phi, 3*theta)

DT[,f(r,phi,θ),by=rowid(r)]
…见@chinsoon12谢谢,但这不起作用。还是81排。我来看看你贴的链接。@chinsoon12恐怕我的问题不够清楚。你发布的链接没有回答这个问题。也许是我误解了……27行还是27列?你可以试试这个
f
f <- function(r, phi, theta) list(2*r, 2*phi, 3*theta)
DT[,c('f1','f2','f3'):=f(r,phi,theta)]

 DT
    r phi theta f1 f2 f3
 1: 0   1    10  0  2 30
 2: 0   1    11  0  2 33
 3: 0   1    12  0  2 36
 4: 0   2    10  0  4 30
 5: 0   2    11  0  4 33
 6: 0   2    12  0  4 36
 7: 0   3    10  0  6 30
 8: 0   3    11  0  6 33
 9: 0   3    12  0  6 36
10: 1   1    10  2  2 30
11: 1   1    11  2  2 33
12: 1   1    12  2  2 36
13: 1   2    10  2  4 30
14: 1   2    11  2  4 33
15: 1   2    12  2  4 36
16: 1   3    10  2  6 30
17: 1   3    11  2  6 33
18: 1   3    12  2  6 36
19: 2   1    10  4  2 30
20: 2   1    11  4  2 33
21: 2   1    12  4  2 36
22: 2   2    10  4  4 30
23: 2   2    11  4  4 33
24: 2   2    12  4  4 36
25: 2   3    10  4  6 30
26: 2   3    11  4  6 33
27: 2   3    12  4  6 36
    r phi theta f1 f2 f3