计算R中所有变量对之间的差异
我有一个带有4列的数据框。
set.seed(123)
df <- data.frame(A = round(rnorm(1000, mean = 1)),
B = rpois(1000, lambda = 3),
C = round(rnorm(1000, mean = -1)),
D = round(rnorm(1000, mean = 0)))
我想计算我数据帧的每一行的列(AB,AC,AD,BC,BD,CD)的每种可能组合的差异。
这相当于每种组合做 df $ a -df $ b
。
我们可以使用 dist()
函数在我的数据集中时有效地计算此功能吗?然后,我想将DIST对象转换为 data.frame
,以 ggplot2
绘制结果。
除非有一个很好的整洁
做上述版本。
非常感谢
我最接近的是在下面做,但是我不确定列名所指的内容。
d <- apply(as.matrix(df), 1, function(e) as.vector(dist(e)))
t(d)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
DIST
将将向量中的每个值与同一向量中的每个其他值进行比较,因此,如果您想比较列列逐行,这不是您想要的。如果您只想计算所有列之间的差异,则可以执行:
在2022-06-14上由 > Reprex软件包(v2.0.1)
dist
will compare every value in a vector to every other value in the same vector, so if you are looking to compare columns row-by-row, this is not what you are looking for.If you just want to calculate the difference between all columns pairwise, you can do:
Created on 2022-06-14 by the reprex package (v2.0.1)
使用基本R:
如果您真的想使用整齐的操作,则可以使用
c_across
,但这也可以删除名称,如果您的数据巨大,则要慢得多Using base r:
If you really want to use a tidy-approach, you could go with
c_across
, but this also removes the names, and is much slower if your data is huge