全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
5481 3
2014-02-15
各位:如何把排列组合运用到循环中呢?比如下面这个列子



y4为10行4列的矩阵,行为文本数,列为关键词,矩阵中的元素1代表有,0代表没有,想要求包含有关键词1和2,1和3,1和4,2和3,2和4,3和4的文本数(也就是按照组合S=combinations(4,2)来算)分别有多少?
我的程序是一个一个求的,但是当关键词数量很大时,就不实际了。请各位高手帮帮忙,感谢!程序如下:
m1=vector( )
for(i in 1:10) {
if (y4[i,1]+y4[i,2]==2) {      
m1=1
} else {
m1=0
}
}
sum(m1)

m2=vector( )
for(i in 1:10) {
if (y4[i,1]+y4[i,3]==2) {      
m2=1
} else {
m2=0
}
}
sum(m2)

m3=vector( )
for(i in 1:10) {
if (y4[i,1]+y4[i,4]==2) {      
m2=1
} else {
m3=0
}
}
sum(m3)

m4=vector( )
for(i in 1:10) {
if (y4[i,2]+y4[i,3]==2) {      
m4=1
} else {
m4=0
}
}
sum(m4)

m5=vector( )
for(i in 1:10) {
if (y4[i,2]+y4[i,4]==2) {      
m5=1
} else {
m5=0
}
}
sum(m5)

m6=vector( )
for(i in 1:10) {
if (y4[i,3]+y4[i,4]==2) {      
m6=1
} else {
m6=0
}
}
sum(m6)






二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2014-2-15 19:16:35
这个觉的倒是可以简单的向量相加

复制代码


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-2-16 02:58:48

y4 <- matrix(sample(0:1, 40, replace = T), nrow = 10)


pair <- as.matrix(expand.grid(col1 = 1:ncol(y4), col2 = 1:ncol(y4)))

pair <- pair[pair[, 1] < pair[, 2], ]

comp <- apply(pair, 1, function(x) y4[, x[1]] & y4[, x[2]])

colnames(comp) <- apply(pair, 1, function(x) paste0("m", x, collapse=""))

cbind(y4, comp)

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-2-17 12:11:09
非常感谢
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

分享

扫码加好友,拉您进群