如何在R的data.table对象中查找具有相同名称的列的每行总和?
为了在R的data.table对象中查找具有相同名称的列的每行总和,我们可以按照以下步骤操作:
首先,创建一个包含一些具有相同名称的列的data.table。
然后,使用tapply以及colnames和sum函数来查找具有相同名称的列的每行总和。
示例
创建data.table
让我们创建一个如下所示的data.table:
library(data.table) DT<- data.table(x=rpois(25,5),y=rpois(25,10),x=rpois(25,5),y=rpois(25,2),check.names=FALSE) DT
输出
执行上述脚本后,将生成以下输出(由于随机化,此输出在您的系统上可能会有所不同):
x y x y 1: 5 13 8 4 2: 1 12 1 4 3: 3 12 7 2 4: 5 12 4 1 5: 3 12 6 4 6: 9 7 5 3 7: 5 10 7 3 8: 4 11 4 1 9: 3 12 3 3 10: 8 11 5 0 11: 3 9 6 3 12: 5 14 3 2 13: 6 10 5 0 14: 4 12 10 3 15: 4 9 4 1 16: 9 7 1 1 17: 5 13 7 2 18: 4 8 3 0 19: 5 16 1 5 20: 5 14 4 1 21: 5 11 11 1 22: 4 5 3 2 23: 6 11 4 2 24: 7 5 5 2 25: 9 18 4 0 x y x y
查找具有相同名称的列的每行总和
使用tapply以及colnames和sum函数来查找data.table对象DT中具有相同名称的列的每行总和:
library(data.table) DT<- data.table(x=rpois(25,5),y=rpois(25,10),x=rpois(25,5),y=rpois(25,2),check.names=FALSE) t(apply(DT,1, function(x) tapply(x,colnames(DT),sum)))
输出
x y [1,] 13 17 [2,] 2 16 [3,] 10 14 [4,] 9 13 [5,] 9 16 [6,] 14 10 [7,] 12 13 [8,] 8 12 [9,] 6 15 [10,] 13 11 [11,] 9 12 [12,] 8 16 [13,] 11 10 [14,] 14 15 [15,] 8 10 [16,] 10 8 [17,] 12 15 [18,] 7 8 [19,] 6 21 [20,] 9 15 [21,] 16 12 [22,] 7 7 [23,] 10 13 [24,] 12 7 [25,] 13 18
广告