要在 R 数据框中查找同名列的行方差,我们可以按照以下步骤操作 -
首先,创建一个数据框,其中一些列具有相同的名称。
然后,使用 tapply 以及 colnames 和 var 函数来查找具有相同名称的列的行差异。
让我们创建一个数据框,如下所示 -
df<- data.frame(x=rpois(25,1),x=rpois(25,10),y=rpois(25,3),y=rpois(25,5),check.names=FALSE) df输出结果
执行时,上述脚本生成以下内容output(this output will vary on your system due to randomization)-
x x y y 1 1 13 4 5 2 2 9 5 9 3 1 13 6 7 4 1 16 4 4 5 2 7 2 6 6 1 9 2 5 7 1 11 7 7 8 1 9 3 7 9 1 13 4 1 10 1 10 6 6 11 3 7 3 5 12 0 11 4 2 13 0 9 4 7 14 0 7 3 7 15 0 9 2 10 16 0 14 1 3 17 0 12 4 6 18 3 10 1 8 19 1 13 2 4 20 0 7 3 9 21 0 14 3 2 22 0 10 2 4 23 0 4 1 4 24 2 9 1 4 25 1 5 1 11
查找具有相同名称的列的行差异
使用 tapply 以及 colnames 和 var 函数来查找数据框 df 中具有相同名称的列的行方差 -
df<- data.frame(x=rpois(25,1),x=rpois(25,10),y=rpois(25,3),y=rpois(25,5),check.names=FALSE) t(apply(df,1, function(x) tapply(x,colnames(df),var)))输出结果
x y [1,] 72.0 0.5 [2,] 24.5 8.0 [3,] 72.0 0.5 [4,] 112.5 0.0 [5,] 12.5 8.0 [6,] 32.0 4.5 [7,] 50.0 0.0 [8,] 32.0 8.0 [9,] 72.0 4.5 [10,] 40.5 0.0 [11,] 8.0 2.0 [12,] 60.5 2.0 [13,] 40.5 4.5 [14,] 24.5 8.0 [15,] 40.5 32.0 [16,] 98.0 2.0 [17,] 72.0 2.0 [18,] 24.5 24.5 [19,] 72.0 2.0 [20,] 24.5 18.0 [21,] 98.0 0.5 [22,] 50.0 2.0 [23,] 8.0 4.5 [24,] 24.5 4.5 [25,] 8.0 50.0