Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 有没有一种方法可以;“自动名称”;用J表示_R_Data.table - Fatal编程技术网

R 有没有一种方法可以;“自动名称”;用J表示

R 有没有一种方法可以;“自动名称”;用J表示,r,data.table,R,Data.table,我有几个问题/建议 我认为一个人不得不写作太糟糕了 R) X[,list(y=sum(y)),by=list(x)] x y 1: q 6 2: w 9 3: e 6 它应该默认保持相同的列名(即:y),其中函数只调用一列,在大多数情况下,这将是一个巨大的收益,通常在金融领域,因为我们通常将其视为加权和或上次或。。。 =>是否有任何变量可以设置为此行为的默认值 在执行SELECT时,我可能希望对少数列执行演算,并对所有其他列应用另一个操作。 我的意思是太糟糕了,当我想要这个: R)

我有几个问题/建议


我认为一个人不得不写作太糟糕了

R) X[,list(y=sum(y)),by=list(x)]
   x y
1: q 6
2: w 9
3: e 6
它应该默认保持相同的列名(即:y),其中函数只调用一列,在大多数情况下,这将是一个巨大的收益,通常在金融领域,因为我们通常将其视为加权和或上次或。。。 =>是否有任何变量可以设置为此行为的默认值


在执行SELECT时,我可能希望对少数列执行演算,并对所有其他列应用另一个操作。 我的意思是太糟糕了,当我想要这个:

R)  X = data.table(x=c("q","q","q","w","w","e"),y=1:6,z=10:15,t=20:25,u=30:35)
R) X
   x y  z  t  u
1: q 1 10 20 30
2: q 2 11 21 31
3: q 3 12 22 32
4: w 4 13 23 33
5: w 5 14 24 34
6: e 6 15 25 35
R) X[,list(y=sum(y),z=last(z),t=last(t),u=last(u)),by=list(x)] #LOOOOOOOOOOONGGGG 
#EXPR
   x y  z  t  u
1: q 6 12 22 32
2: w 9 14 24 34
3: e 6 15 25 35
我不能写得像

R) X[,list(sum(y)),by=list(x),defaultFn=last] #defaultFn would be 
applied to all remaniing columns
=>我是否可以以某种方式执行此操作(可能正在设置选项)



谢谢第1部分,这个主意不错。我们已经对
by
中的表达式执行了此操作,并且
j
的列表中已经列出了一些相近的内容:


但如果我们这样做了,它可能需要通过一个选项打开,以保持向后兼容性。我在FR中添加了一个链接回到这个问题


关于第二部分,如何:

X[,c(y=sum(y),lapply(.SD,last)[-1]),by=x]
   x y  z  t  u
1: q 6 12 22 32
2: w 9 14 24 34
3: e 6 15 25 35

不过,请分别提出多个问题。关于S.O.的每个问题都应该是一个单独的问题。

在第1部分,这不是一个坏主意。我们已经对
by
中的表达式执行了此操作,并且
j
的列表中已经列出了一些相近的内容:


但如果我们这样做了,它可能需要通过一个选项打开,以保持向后兼容性。我在FR中添加了一个链接回到这个问题


关于第二部分,如何:

X[,c(y=sum(y),lapply(.SD,last)[-1]),by=x]
   x y  z  t  u
1: q 6 12 22 32
2: w 9 14 24 34
3: e 6 15 25 35

不过,请分别提出多个问题。S.O.上的每个问题都应该是一个单独的问题。

我展示了两个我不知道如何用不同的方式书写的表达,然后这些问题是。。。这是最好的方法了?你知道data.table有一个可以询问开发/功能请求类型问题的窗口吗?@statquant如果你按照“有没有办法在j中自动命名表达式?”之类的方式编辑问题标题,那么这将是一个好问题。请记住,我们试图在这里建立一个知识库,将来可以很容易地进行搜索。把思想放在问题标题上会让我们站在一边。第2部分的答案似乎是
lappy(.SD,last)
,这样行吗?寻找这个成语的例子;一个是在
示例(data.table)
中。我展示了两个我不知道如何编写不同的表达式,问题是。。。这是最好的方法了?你知道data.table有一个可以询问开发/功能请求类型问题的窗口吗?@statquant如果你按照“有没有办法在j中自动命名表达式?”之类的方式编辑问题标题,那么这将是一个好问题。请记住,我们试图在这里建立一个知识库,将来可以很容易地进行搜索。把思想放在问题标题上会让我们站在一边。第2部分的答案似乎是
lappy(.SD,last)
,这样行吗?寻找这个成语的例子;一个是在
示例(data.table)
中。嘿,Matthew,我想这个示例没问题,但是让我们假设你做
X[,c(y=sum(y),z=sum(z),lapply(.SD,last)[-c(1,2)],by=X]
这会再次变得混乱。。。我意识到这个请求有点笨拙,但我认为能够访问“所有剩余”列将是一个伟大的功能。您是否尝试过
.SDcols
?嘿,Matthew,我想这对于这个示例来说是可以的,但让我们假设您执行
X[,c(y=sum(y),z=sum(z),lapply(.SD,last)[-c(1,2)]),by=X]
这可能会再次变得混乱。。。我意识到这个请求有点笨拙,但我认为能够访问“所有剩余”列将是一个很好的功能。您是否尝试过
.SDcols