2015-02-11 73 views
0

我制作了一个矩阵a,其中包含字符名称“0”,...,“10”。现在我创建列名称的一个子集列表S。我想要子集矩阵a,这样我就不会在S中具有名称的列。我正在尝试执行以下操作,但它给出了错误。任何想法?从矩阵R中的子集设置没有指定特定列名称

> 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

尝试'一[,setdiff(colnames(一),S)'或'一[,!colnames(一) %in%S]' – akrun 2015-02-11 18:17:54

+0

非常感谢! :) – hmi 2015-02-11 18:20:50

回答

1

您可以尝试

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

或者

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