41

としましょうt1

t1 <- array(1:20, dim=c(10,10))

      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
 [1,]    1   11    1   11    1   11    1   11    1    11
 [2,]    2   12    2   12    2   12    2   12    2    12
 [3,]    3   13    3   13    3   13    3   13    3    13
 [4,]    4   14    4   14    4   14    4   14    4    14
 [5,]    5   15    5   15    5   15    5   15    5    15
 [6,]    6   16    6   16    6   16    6   16    6    16
 [7,]    7   17    7   17    7   17    7   17    7    17
 [8,]    8   18    8   18    8   18    8   18    8    18
 [9,]    9   19    9   19    9   19    9   19    9    19
[10,]   10   20   10   20   10   20   10   20   10    20

このマトリックスから行4-6と列7-9を削除したいと思います。

私はそれを使って一つずつそれを取り除く方法を知っています

t2 <- t1[,-7]
t3 <- t2[,-8]
t4 <- t3[,-9]
t5 <- t4[-4,]
t6 <- t5[-5,]
t7 <- t6[-6,]

しかし、それが最も愚かな方法だと思います。それを行うためのより賢い方法をアドバイスしていただけませんか?

4

4 に答える 4

67

できるよ:

t1<- t1[-4:-6,-7:-9]
于 2012-10-16T17:10:02.563 に答える
7

使用できます

t1<- t1[-4:-6,-7:-9]  

また

t1 <- t1[-(4:6), -(7:9)]

また

t1 <- t1[-c(4, 5, 6), -c(7, 8, 9)]

vectors選択rows/columnsして削除することができます。最初の 2 つの方法は、連続する行/列を削除しようとしている場合に役立ちます。Discrete を削除しようとしている場合は、3 番目の方法が便利ですrows/columns

> t1 <- array(1:20, dim=c(10,10));

> t1[-c(1, 4, 6, 7, 9), -c(2, 3, 8, 9)]

     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    2   12    2   12    2   12
[2,]    3   13    3   13    3   13
[3,]    5   15    5   15    5   15
[4,]    8   18    8   18    8   18
[5,]   10   20   10   20   10   20
于 2015-08-17T17:43:47.370 に答える
2

論理ブール値のベクトルを行列に入力して、行と列を削除することもできます。これにより、複数の連続しない行または連続しない列を削除する必要がある状況が処理されます。

# TRUE = Keep a row/column
# FALSE = Delete a row/column
#
# FALSE for rows 4, 5, and 6
# Row:            1     2     3     4      5      6      7     8     9     10
rows_to_keep <- c(TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE)
    
# FALSE for columns 7, 8, and 9
# Column:         1     2     3     4     5     6     7      8      9      10
cols_to_keep <- c(TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE) 

行だけを削除するには:

t1 <- t1[rows_to_keep,]

列のみを削除するには:

t1 <- t1[,cols_to_keep]

行と列の両方を削除するには:

t1 <- t1[rows_to_keep, cols_to_keep]

このコーディング手法は、削除する必要がある行または列が事前にわからない場合に役立ちます。rows_to_keepおよびベクトルはcols_to_keep、コードによって適切に計算できます。

于 2020-08-09T06:35:20.053 に答える