Q1=c(0,1,0,1,0,1,0,1)
Q2=c(1,0,0,0,1,1,1,0)
Q3=c(0,0,0,0,0,0,0,0)
Q4=c(1,0,0,0,1,1,1,0)
Q = cbind(Q1,Q2, Q3, Q4)
Q = matrix(Q, 8, 4)
[,1] [,2] [,3] [,4]
[1,] 0 1 0 1
[2,] 1 0 0 0
[3,] 0 0 0 0
[4,] 1 0 0 0
[5,] 0 1 0 1
[6,] 1 1 0 1
[7,] 0 1 0 1
[8,] 1 0 0 0
我想編寫一個函數操作每兩列在矩陣
ifelse(Q[1]==1||Q[2]==1, 1,0)
,然後繼續列3,4
ifelse(Q[3]==1||Q[4]==1, 1,0)
返回矩陣
這增加是我的代碼:
n = function(n){
x <- matrix(n row= 8,n col=n)
for(i in 1:n){
for (j in 1: 4){
i = 1
j = 1
x[,i]= apply(Q, 1, function(x)if else(x[j]==1||x[j+1]==1, 1,0))
j = j+2
}
return(x)
}
}
n(1)
n(2)
[,1] [,2]
[1,] 1 NA
[2,] 1 NA
[3,] 0 NA
[4,] 1 NA
[5,] 1 NA
[6,] 1 NA
[7,] 1 NA
我覺得我做錯了什麼,新的矩陣假設,再加上我有超過100列,所以我必須寫增加循環,每2列
[,1] [,2]
[1,] 1 1
[2,] 1 0
[3,] 0 0
[4,] 1 0
[5,] 1 1
[6,] 1 1
[7,] 1 1
我想在第二列最後值是零,不是? –
是的,錯字。謝謝 – BIN
也許[這](http://stackoverflow.com/questions/10661295/apply-a-function-over-groups-of-columns)將幫助你。 – Sotos