Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.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-通过列差分循环_R - Fatal编程技术网

R-通过列差分循环

R-通过列差分循环,r,R,假设我们有4个向量 a <- c(200,204,209,215) b <- c(215,220,235,245) c <- c(230,236,242,250) d <- c(240,242,243,267) a我们可以将其放在列表中并使用combn获得组合,然后应用差异 lst1 <- list(a = a, b = b, c = c, d = d) out <- combn(lst1, 2, FUN = function(x) scale(Reduce

假设我们有4个向量

a <- c(200,204,209,215)
b <- c(215,220,235,245)
c <- c(230,236,242,250)
d <- c(240,242,243,267)

a我们可以将其放在
列表中
并使用
combn
获得组合,然后应用差异

lst1 <- list(a = a, b = b, c = c, d = d)
out <- combn(lst1, 2, FUN = function(x) scale(Reduce(`-`, x))[,1])
colnames(out) <- combn(names(lst1), 2, FUN = paste, collapse='_')
out
#            a_b        a_c        a_d        b_c       b_d        c_d
#[1,]  0.9108601  1.2009612  0.1290994 -0.7643506 -0.753390 -0.2219686
#[2,]  0.7759179  0.2401922  0.3872983 -0.9441978 -0.360317  0.3699477
#[3,] -0.5735045 -0.2401922  0.9036961  0.6744270  1.474024  1.1098432
#[4,] -1.1132735 -1.2009612 -1.4200939  1.0341214 -0.360317 -1.2578222

单一命名变量不太适合“循环”。 让我们使用向量的
list()

vecs <- list(
    a = c(200,204,209,215),
    b = c(215,220,235,245),
    c = c(230,236,242,250),
    d = c(240,242,243,267)
)

现在,
z_分数
是6个矩阵(列向量)的列表。列名显示缩放前减去的向量。

NB此方法会丢失重建原始值所需的缩放属性(
scaled:center
scaled:scale
)。非常感谢!
vecs <- list(
    a = c(200,204,209,215),
    b = c(215,220,235,245),
    c = c(230,236,242,250),
    d = c(240,242,243,267)
)
scale_diff <- function(subset) {
    z <- scale(subset[[1]] - subset[[2]])
    colnames(z) <- paste(names(subset), collapse = " - ")
    z
}

z_scores <- combn(vecs, 2, scale_diff, simplify = FALSE)