R 图梳值
我有一个data.frame,每行代表n个样本的成对组合的值。我如何扩展它以获得每个组合的“expand.grid”,但保持给定对的值,并为具有相同样本的行提供值1? 我的目标是以“相关矩阵”样式绘制这些图(例如)。不确定是否有更简单的方法R 图梳值,r,plot,R,Plot,我有一个data.frame,每行代表n个样本的成对组合的值。我如何扩展它以获得每个组合的“expand.grid”,但保持给定对的值,并为具有相同样本的行提供值1? 我的目标是以“相关矩阵”样式绘制这些图(例如)。不确定是否有更简单的方法 set.seed(123) n <- 3 d <- as.data.frame(t(combn(letters[1:n], m = 2)), stringsAsFactors = FALSE) d$value <- rnorm(nrow(d
set.seed(123)
n <- 3
d <- as.data.frame(t(combn(letters[1:n], m = 2)), stringsAsFactors = FALSE)
d$value <- rnorm(nrow(d))
d
## V1 V2 value
## 1 a b -0.5604756
## 2 a c -0.2301775
## 3 b c 1.5587083
e <- expand.grid(letters[1:n], letters[1:n])
#e$value <- ??
# a-a, b-b, c-c will be e.g. 1
# a-b and b-a will be -0.5604
# a-c and c-a will be -0.2301
# b-c and c-b will be 1.5587
e
## Var1 Var2
## 1 a a
## 2 b a
## 3 c a
## 4 a b
## 5 b b
## 6 c b
## 7 a c
## 8 b c
## 9 c c
set.seed(123)
n这里有一个使用data.table
的选项。将'data.frame'转换为'data.table'(setDT(d,…
)设置'key'列,交叉连接,对于'V1'和'V2'中具有相同值的行(V1==V2
),将'value'设置为1。根据相同列的'V1',V2',和pmin
,将'value'替换为'value'中的非NA值
library(data.table)
d1 <- setDT(d, key = c("V1", "V2"))[CJ(letters[1:n], letters[1:n])][
V1==V2, value:= 1][, value:= na.omit(value) , .(pmax(V1, V2), pmin(V1, V2))][]
d1
# V1 V2 value
#1: a a 1.0000000
#2: a b -0.5604756
#3: a c -0.2301775
#4: b a -0.5604756
#5: b b 1.0000000
#6: b c 1.5587083
#7: c a -0.2301775
#8: c b 1.5587083
#9: c c 1.0000000
库(data.table)
d1