在R中对Matrix中的列进行子集,但未指定特定的列名

时间:2015-02-11 18:14:40

标签: r matrix subset

我制作了一个字符名称为" 0",...," 10"的矩阵。现在我创建列名称的子集列表S.我想要对矩阵a进行子集化,以便我不会在S中使用名称的列。我正在尝试执行以下操作,但它&# 39;给出错误。有什么想法吗?

 > a
          0  1  2  3  4  5  6  7  8  9  10
     [1,] 1  1 11 21 31 41 51 61 71 81  91
     [2,] 1  2 12 22 32 42 52 62 72 82  92
     [3,] 1  3 13 23 33 43 53 63 73 83  93
     [4,] 1  4 14 24 34 44 54 64 74 84  94
     [5,] 1  5 15 25 35 45 55 65 75 85  95
     [6,] 1  6 16 26 36 46 56 66 76 86  96
     [7,] 1  7 17 27 37 47 57 67 77 87  97
     [8,] 1  8 18 28 38 48 58 68 78 88  98
     [9,] 1  9 19 29 39 49 59 69 79 89  99
    [10,] 1 10 20 30 40 50 60 70 80 90 100
    > colnames(a)
     [1] "0"  "1"  "2"  "3"  "4"  "5"  "6"  "7"  "8"  "9"  "10"

> S <- as.character(c(0,2))
> S
[1] "0" "2"
> a[,-S]
Error in -S : invalid argument to unary operator

1 个答案:

答案 0 :(得分:1)

你可以尝试

a[,setdiff(colnames(a), S)]

或者

a[,!colnames(a) %in% S]