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