2017-01-09 43 views
-1

我已中的R添加基於行索引列值中的R

> head(genes) 
    Genes 
1 APOBEC4 
2 B3GALT2 
3 C1orf127 
4 CAMK1G 
5 CAMTA1 
6 EPHX1 

以下數據幀我有行索引的矢量。

> head(sig) 
[1] 10 11 41 54 125 126 

現在我想另一列添加到數據幀genes,使得指數sig的行會得到一個值「Yes」否則「NO

喜歡的東西:

head(genes) 
    Genes Sig 
1 APOBEC4 NO 
2 B3GALT2 NO 
3 C1orf127 NO 
4 CAMK1G NO 
5 CAMTA1 NO 
... 
10 XXX YES 
... 
41 YYY YES 

我試過但我找不到解決方案。

+0

我不明白爲什麼人們會給出反對票。每個人都不熟悉所有事情,可能對其他編程語言沒有基本的瞭解。我編寫python片段和shell腳本,我分析複雜的基因組數據以瞭解它背後的更復雜的生物學。突然間,如果我在一些我沒有頭緒的緊急問題上提出一個基本問題,人們會感到惱火?涼。 – gthm

回答

2

我們可以簡單地使用base R

genes$Sig <- c("NO", "YES")[(seq_len(nrow(genes)) %in% sig) + 1] 

或用ifelse

genes$Sig <- ifelse(seq_len(nrow(genes)) %in% sig, "YES", "NO") 

或者創建一個列與「否」,然後根據指數分配「是」

genes$Sig <- "NO" 
genes$Sig[sig] <- "YES" 
1

我不確定,如果在您的數據框中有rownames。我們可以使用row_number()功能dplyr檢查,如果該行存在於sig,並指定值相應

library(dplyr) 
genes %>% 
    mutate(Sig = ifelse(row_number() %in% sig, "YES", "NO"))