[R-br] Subset a data.frame com base no valor absoluto de uma coluna

Marcelo Laia marcelolaia em gmail.com
Sáb Abr 25 20:47:14 -03 2020


Prezado(a),

Tenho o seguinte problema:

data <- replicate(5, rnorm(10))
colnames(data) <- paste("Sample", c(1:ncol(data)))
rownames(data) <- paste("Gene", c(1:nrow(data)))
head(data)
           Sample 1    Sample 2    Sample 3    Sample 4   Sample 5
Gene 1  -1.29177540  2.61720282 -0.64705357 -2.05636255  0.5752323
Gene 2  -1.20619719  1.13791932  1.12844157 -0.04053514  1.2973240
Gene 3  -0.15952476 -0.56391140 -1.34226004 -1.21020574 -1.1353717
Gene 4   1.58893451 -1.33082381  0.02267418  1.42659928  2.2377680
Gene 5  -0.56417983 -0.14454059 -0.14543579  0.43021823 -1.1564112
Gene 6  -0.01443123  0.08013149  0.44877039 -0.38360173  1.7286058
Gene 7  -0.40133700 -0.84755154 -1.05251409  1.87298617  0.7788947
Gene 8  -1.81773166 -1.50967753  0.30168885  1.06245963  0.2409281
Gene 9  -2.27682903  0.83455263 -0.93035283 -0.49503281 -0.7293654
Gene 10 -0.19309118 -0.84698014 -0.12649364 -1.32398348  1.3218277

Eu desejo fazer um subset em um novo data.frame com os dados das
colunas 1 e 2 (Sample 1 e Sample 2) baseados no valor absoluto da
coluna 4 (Sample 4).

Eu tentei o seguinte:

mydata <- subset(data, (data[ ,4]>abs(1.3)))
mydata

        Sample 1   Sample 2    Sample 3 Sample 4  Sample 5
Gene 4  1.588935 -1.3308238  0.02267418 1.426599 2.2377680
Gene 7 -0.401337 -0.8475515 -1.05251409 1.872986 0.7788947

No entanto, neste primeiro passo ele só pega os positivos da coluna 4
que são maiores que 1,3. Os valores negativos maiores que módulo de 
-1,3 são todos excluídos.

No segundo passo eu excluiria as colunas 3, 4 e 5.

myvars <- colnames(mydata) %in% c("Sample 3", "Sample 4", "Sample 5")
mydata2 <- mydata[!myvars]

Como não consegui obter o primeiro passo, o segundo também não rodou.

Obrigado

-- 
Marcelo


Mais detalhes sobre a lista de discussão R-br