我在R中遇到了以下问题:
我有一个名为"H“的矩阵,它是通过以下方式获得的:
v<-t(combn(x, 1))
v<-cbind(v,matrix(0,nrow(v),2))
y<-t(combn(x, 2))
y<-cbind(y,matrix(0,nrow(y),1))
z<-t(combn(x, 3))
H<-rbind(v,y,z) 它将是title中的"nxc“矩阵:
[,1] [,2] [,3]
[1,] 1 0 0
[2,] 2 0 0
[3,] 3 0 0
[4,] 4 0 0
[5,] 5 0 0
[6,] 6 0 0
[7,] 7 0 0
[8,] 8 0 0
[9,] 9 0 0
[10,] 10 0 0
[11,] 1 2 0
[12,] 1 3 0
[13,] 1 4 0接下来,我有一个"nxm“矩阵,它是通过重复第一列(在本例中是1:10的序列) "n”次(基于H‘s行)创建的。
x = c(1:10)
c<-as.data.frame(t(x))
a<-as.data.frame(c[rep(seq_len(nrow(c)), each=nrow(H)),])这将给出:
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
1 1 2 3 4 5 6 7 8 9 10
1.1 1 2 3 4 5 6 7 8 9 10
1.2 1 2 3 4 5 6 7 8 9 10
1.3 1 2 3 4 5 6 7 8 9 10
1.4 1 2 3 4 5 6 7 8 9 10
1.5 1 2 3 4 5 6 7 8 9 10
1.6 1 2 3 4 5 6 7 8 9 10现在,我想要得到的是一个数据框,它比较这两个数字,当"H“中的一个数字在"a”和"FALSE“列中时显示"TRUE”,而不是“FALSE”。就像这样:
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
1 TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
1.1 FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
.
.
.
1.n FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE谢谢!
发布于 2017-08-04 07:42:02
我回来了:希望这能有所帮助:
t(mapply("%in%",data.frame(t(a)),data.frame(t(H))))上面的代码比较了a行中H行中的值,并在a的值为H时给出了一个TRUE。如果这不起作用,请告诉我
发布于 2017-08-04 05:25:15
也许这会有帮助(b是想要的数据帧):
b <- data.frame()
for (j in 1:nrow(a)){
common = intersect(H[j,],a[j,])
for (i in a[j,])
{
if (i %in% common){
b[j,i]<- T
}
else
{
b[j,i]<- F
}
}
}https://stackoverflow.com/questions/45493446
复制相似问题