我有一個矩陣,看起來像這樣:子集列
> expressionMatrix
Sample_1 Sample_2 Sample_3 Sample_4 Sample_5
Gene_1 1 2 3 4 5
Gene_2 6 7 8 9 10
和矢量:
outliers <- c("Sample_2", "Sample_3")
如果我問的expressionMatrix
一個子集僅包括在outliers
樣品,工作正常:
subset(expressionMatrix, select=outliers)
Sample_2 Sample_3
Gene_ 2 3
Gene_2 7 8
不過,我似乎無法獲得信其中包括expressionMatrix
的所有樣本,其中包括除outliers
以外的所有樣本。
我想:
subset(expressionMatrix, select=-outliers)
但返回一個錯誤:
Error in -(outliers) : invalid argument to unary operator
然而,要求中值的矢量排除(不帶引號)直接做工作:
subset(expressionMatrix, select=-c(Sample_2, Sample_3))
Sample_1 Sample_4 Sample_5
Gene_1 1 4 5
Gene_2 6 9 10
我試圖通過收斂來做到這一點異常值它可以:
subset(expressionMatrix, select=-noquotes(outliers))
但仍然是同樣的錯誤。
Error in -noquote(outliers) : invalid argument to unary operator.
爲什麼subset
函數接受矢量對象要求列入的時候,卻沒有要求排除什麼時候?
感謝您詳盡的解釋。 我仍然不明白爲什麼通過參數'select = - (noquote(outliers))'不起作用。我基本上是通過'select = -c(Sample_2,Sample_3)',不是嗎? – gaelgarcia
@PinkSharpie - no,因爲'noquote()'創建一個類「noquote」對象,它與類「name」對象不同。在下面,「noquote」對象仍然是一個字符向量。雖然我理解這種混亂,但它們確實看起來一樣。 –
加上'select ='參數留給懶惰評估。在評估中,「離羣值」變量在工作中不會很快擴展。列名必須顯式出現在函數的參數中才能展開。 – MrFlick