R-通过列差分循环
假设我们有4个向量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
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)