a是个4*5的数据框,在运行以下代码时,发现结果按照每列运用自定义函数,数据框未转置,最终结果仍是一个4*5的矩阵,apply(a,2,function(emat) (emat - mean(emat)) / sd(emat)),但是运行下面这个代码时,发现按照每行应用了自定义函数,且最终结果是一个5*4的矩阵,apply(a,1,function(emat) (emat - mean(emat)) / sd(emat)),为什么
时间: 2024-04-14 19:32:16 浏览: 46
这是因为在apply函数中,第三个参数是应用于每个行或列的自定义函数。当选择参数为2时,即apply(a, 2, function(emat) (emat - mean(emat)) / sd(emat)),函数会按列应用,即每列的数据作为参数传递给自定义函数进行计算。由于每列的数据数量是一致的,所以最终结果仍然是一个4*5的矩阵。
而当选择参数为1时,即apply(a, 1, function(emat) (emat - mean(emat)) / sd(emat)),函数会按行应用,即每行的数据作为参数传递给自定义函数进行计算。由于每行的数据数量是一致的,所以最终结果是一个5*4的矩阵。
因此,选择参数不同会影响apply函数中自定义函数的应用方式,从而导致结果矩阵的形状不同。
阅读全文