2016-03-25 17 views
0

'da for döngüsünü kullanırken bunu kendim denedim ve çevrimiçi nasıl yürüdüm, ancak doğrudan bir yanıt yok. Temel olarak, 3 karakterden daha fazlasına sahip bir matristeki satırları silmeye çalışıyorum. Kodum sadece son satırı siliyor. Satırlar 16-31 silinmelidir. i yinelenir, ancak yalnızca durumu karşılayan son sütunu siler. Ancak, daha fazla satır silinmelidir. Yardımlarınız için şimdiden teşekkürler!Matristeki bir satırdan daha fazlası nasıl silinir, sadece son satır değil, R

setwd("~/Desktop/Rpractice") 

c <- c("1", "2", "3", "4", "5") 

combine <- function (x, y) {combn (y, x, paste, collapse = ",")} 

combination_mat <- as.matrix(unlist(lapply (1:length (c), combine, c))) 

for (i in length(combination_mat)) { 

    if (nchar(combination_mat[i]) > 3) { 

    newmat <- print(as.matrix(combination_mat[-i,])) 

    } 
} 

cevap

1

Gerçekten yerine verilerin tablo biçimini korumak için drop=FALSE argüman lütfen unutmayın (örn 3'ten fazla karakter içeren satırları bulun ve bu kaldırabilir bu satırları kaldırmak için bir döngü gerekmez bunu bir vektöre basitleştirmek için):

> combination_mat[nchar(combination_mat[, 1]) <= 3, , drop = FALSE] 
     [,1] 
[1,] "1" 
[2,] "2" 
[3,] "3" 
[4,] "4" 
[5,] "5" 
[6,] "1,2" 
[7,] "1,3" 
[8,] "1,4" 
[9,] "1,5" 
[10,] "2,3" 
[11,] "2,4" 
[12,] "2,5" 
[13,] "3,4" 
[14,] "3,5" 
[15,] "4,5" 
İlgili konular