具有独特组合的R tcrossprod
可能有一个版本的tcrossprod实现了这一点,但我没有找到它。从下面的示例中,如果顺序不重要,如何仅获取第一次出现组合的行?即(1,2)对我来说与(2,1)相同具有独特组合的R tcrossprod,r,melt,cross-product,R,Melt,Cross Product,可能有一个版本的tcrossprod实现了这一点,但我没有找到它。从下面的示例中,如果顺序不重要,如何仅获取第一次出现组合的行?即(1,2)对我来说与(2,1)相同 a具有m位的技巧,但有效:tt@user20650我认为表中第一次出现的对应于下三角部分,应该使用lower.tri而不是upper.tri,并且应该另外使用参数diag=TRUE,因为我们也需要这些对角线元素;尝试代码-我认为它产生了正确的顺序,我们不想要diag=TRUE,因为这会将对角线条目设置为NA@user20650我的错
a具有m位的技巧,但有效:tt@user20650我认为表中第一次出现的对应于下三角部分,应该使用lower.tri
而不是upper.tri
,并且应该另外使用参数diag=TRUE
,因为我们也需要这些对角线元素;尝试代码-我认为它产生了正确的顺序,我们不想要diag=TRUE
,因为这会将对角线条目设置为NA
@user20650我的错误,我的思维在不同的轨道上,我读代码太快了,你完全正确。应该是子集(m,X1>=X2)
当然,如果需要考虑对角线元素,它可以是X1>=X2。我没有这样做,因为OP没有说任何关于它们的事情,我从他之前关于这个主题的问题()中假设对角线元素在这里不感兴趣。啊哈,我不知道还有其他相关的问题,所以我只想说“组合的第一次出现”。
a <- c(1,2,3,4)
b <- c(10,5,4,10)
df<- data.frame(a,b)
melt(tcrossprod(df$b,1/df$b))
> melt(tcrossprod(df$b,1/df$b))
Var1 Var2 value
1 1 1 1.00
2 2 1 0.50
3 3 1 0.40
4 4 1 1.00
5 1 2 2.00
6 2 2 1.00
7 3 2 0.80
8 4 2 2.00
9 1 3 2.50
10 2 3 1.25
11 3 3 1.00
12 4 3 2.50
13 1 4 1.00
14 2 4 0.50
15 3 4 0.40
16 4 4 1.00
subset(m,X1>X2)
# X1 X2 value
#2 2 1 0.5
#3 3 1 0.4
#4 4 1 1.0
#7 3 2 0.8
#8 4 2 2.0
#12 4 3 2.5