R 如何将第一行中的值减法循环到同一列中的值

R 如何将第一行中的值减法循环到同一列中的值,r,loops,tidyr,R,Loops,Tidyr,我正在寻找一个函数/循环,它首先选择子值的第一个单元格减去第二个单元格中的子值,然后在第二个循环中选择第二个单元格,以此类推。然后循环对每列执行此操作 例如: G1-G2,G1-G3,G1-G4等。然后G2-G3,G2-G4等。那么你想用第二行减去完整的第一行,第1行减去第3行,依此类推,直到最后一行,然后用第二行减去第三行,第二行减去第四行,依此类推,直到最后一行 我认为combn可以帮助您实现以下目标: df <- data.frame(a = 1:5, b = 11:15, c =

我正在寻找一个函数/循环,它首先选择子值的第一个单元格减去第二个单元格中的子值,然后在第二个循环中选择第二个单元格,以此类推。然后循环对每列执行此操作

例如:


G1-G2,G1-G3,G1-G4等。然后G2-G3,G2-G4等。

那么你想用第二行减去完整的第一行,第1行减去第3行,依此类推,直到最后一行,然后用第二行减去第三行,第二行减去第四行,依此类推,直到最后一行

我认为
combn
可以帮助您实现以下目标:

df <- data.frame(a = 1:5, b = 11:15, c = 4:8)
mat <- combn(seq(nrow(df)), 2)
result <- df[mat[1, ], ] - df[mat[2, ], ]

这就是你想要的吗

data = data.frame(matrix(rnorm(3*5, 25, 5), ncol = 3)) # 5 rows for demo
colnames(data) = c("A","B","C")
rownames(data) = paste("G",seq(1,nrow(data)), sep = "")
生成的数据如下所示:

-- A. B C G1 14.83125 21.33644 21.99278 G2 33.88000 28.63547 29.96025 G3 30.60549 22.31251 16.20981 G4 29.74367 30.92053 20.39461 G5 17.99330 31.33550 26.07054
图像不是发布数据(或代码)的好方法。看到了吗。您能否以
dput
格式发布样本数据?请使用您尝试过的代码和
dput(df)
的输出编辑问题。或者,如果dput(头部(df,20))的输出太大。(注意:
df
是数据集的名称。)同时发布预期输出。
data = data.frame(matrix(rnorm(3*5, 25, 5), ncol = 3)) # 5 rows for demo
colnames(data) = c("A","B","C")
rownames(data) = paste("G",seq(1,nrow(data)), sep = "")