当前位置:  开发笔记 > 编程语言 > 正文

从data.table的一列和相应的总和中进行组合

如何解决《从data.table的一列和相应的总和中进行组合》经验,为你挑选了2个好方法。



1> Frank..:

您可以使用CJ"自交"连接每个列:

dtIn[, lapply(.SD, function(x) 
  Reduce(if (class(x)=="character") paste0 else `+`, CJ(x,x)))]

这有一些优点outer:

它不涉及将矩阵(从outer)强制回到矢量.

它不需要重复输入var名称.

如果dtIn列具有名称(默认值除外),则会保留它们.

它可以相当干净地扩展(例如,CJ(x,x,x)获得3x组合).

.


在基础中,这可以完成expand.grid,这基本上与CJ:

DF = data.frame(dtIn)
data.frame(lapply(DF, function(x) 
  Reduce(if (class(x)=="character") paste0 else `+`, expand.grid(x,x))))



2> agstudy..:

双循环建议使用outer此处:

dtIn[,list(outer(V1,V1,paste0),outer(V2,V2,"+"))]

#    V1  V2
# 1: AA 1.2
# 2: BA 0.9
# 3: CA 0.7
# 4: AB 0.9
# 5: BB 0.6
# 6: CB 0.4
# 7: AC 0.7
# 8: BC 0.4
# 9: CC 0.2

推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有