2013-02-21 1 views

ответ

2

Я принимаю ACEF are rownames. Assumming, что ваш кадр данных называются dd, основные Подменят должен сделать трюк:

##Select rows where the rownames are in a particular vector 
dd[rownames(dd) %in% c("A", "C", "E", "F"), ] 
+0

Спасибо! Я хочу пойти еще на один шаг, так как dataframe - это 128 столбцов с 105k строк (128 x 105k), а мой идентификатор rownames - 3500, сохраненный в другом файле «subsetID.txt». Как получить подмножество фрейма данных? Еще раз спасибо! – Ivan

+0

Пожелание есть способ объединить все ответы вместе! Я пытался grep вектор/столбец из другого файла, который является подмножеством кодовых имен моего фрейма. подмножество <-read.table ("list.tab", header = F) dfrm [grepl (subset [, 1], dfrm [, 1]),] Но не прошел. Любая подсказка? Еще раз спасибо! – Ivan

1

Допуская A..F взято из колонки V1, вы можете использовать grepl, который возвращает TRUE/FALSE:

# gives TRUE when V1 != B, D 
df[grepl("[^BD]", df$V1), ] 

# V1 V2 V3 V4 
# 1 A 1 3 4 
# 3 C 7 8 9 
# 5 E 1 3 3 
# 6 F 2 4 5 
1

Если вы хотите точно случаев, которые являются A, C, E или F в первой колонке, и необходимо использовать grep, затем:

dfrm[ grep("^[ACEF]$", dfrm[,1]), ] 

Если эти письма были rownames затем использовать rownames(dfrm) вместо dfrm[,1]

Чтобы создать новый объект:

newobj <- dfrm[ grep("^[ACEF]$", dfrm[,1]), ] 

Чтобы Ваш комментарий: Для того, чтобы сохранить в качестве объекта R позже load в сессию:

save(newobj , file='newobj_file.rda') 

Чтобы сохранить в виде текстового файла:

write.table(newobj, file='newobj_out.txt') 

Подробнее см. В таблице для записи. Для получения дополнительной информации об этом и см. Руководство по импорту/экспорту для получения большего количества фона. Это часть вашей установки R. Используйте свои справочные службы. На моей машине он находится в каталогах R как: .... /doc/manual/R-data.html

+0

Спасибо! Мне нужен еще один шаг для подписок, сохраненных в файле. – Ivan

+0

Вы имеете в виду, что вам нужен пример того, как создать новый объект с этим результатом?'newobj <- dfrm [grep ("^[ACEF] $ ", dfrm [, 1]),]' –

+0

Нет, я имею в виду «^ [ACEF] $» - фактически вектор из другого файла, который является подмножеством colnames of dfrm. Благодаря! – Ivan

0

Спасибо DWin и csgillespie! Трюк - это вектор, на который я должен обратить больше внимания.

>dfrm 
A 1 3 4 
B 4 5 6 
C 7 8 9 
D 1 3 4 
E 1 3 3 
F 2 4 5 

и мой список интерес сохраняется в файле

subset <-read.table("infile", header=F) 
>subset 
1 A 
2 C 
3 E 
4 F 
> dfrm[rownames(dfrm) %in% subset[,1], ] 
A 1 3 4 
C 7 8 9 
E 1 3 3 
F 2 4 5 

Я должен был знать, что подмножество является кадр данных, тоже. Подмножество [, 1] сыграло трюк. Спасибо, csgillespie!

Смежные вопросы