2012-04-17 73 views
0

只有一張桌子的某些行我有一個表格式如下:提取R中

fragment of table

我想寫A R腳本,將「提取」從表例如案件有c2 == 1,(c2和c3)== 1,(c2和c4)== 1,(c1和c2和c3)== 1,等等...... 這樣最終我會擁有一個具有每種情況的Counts值的列表。

實施例列表中具有C2 == 1列: C2 < -c(4,42,12,...)

我試圖將其上這種方式:totalC2 < -table [表[ c1]],如果我使用表$ c1 == 1它不起作用。

任何人都可以給我一個建議如何解決這個問題?

我忘了提,該表來自於功能: vennCounts()

+0

如果我正確理解的問題,有在'C2 == 1印錯像C2 < - C(4,42,12,...)',它應該是'C2 == 1像C2 < - c(5,42,12,...)'關於給出的例子。 – DrDom 2012-04-17 09:47:15

回答

1

在您將命名爲相應的計數表的輸出。但也許用更清晰和直接的解決方案可以取得相同的結果。讓我們拭目以待另一個答案。

# data simulation 
c1 <- sample(c(0,1), 10, replace=T) 
c2 <- sample(c(0,1), 10, replace=T) 
c3 <- sample(c(0,1), 10, replace=T) 
c4 <- sample(c(0,1), 10, replace=T) 
Counts <- sample(1:100, 10) 
df <- data.frame(c1, c2,c3, c4, Counts) 

f <- function(y) { 
    idx <- apply(df[,y, drop=F], 1, function(x) all(x == 1)) 
    df[idx, "Counts"] 
} 

out <- list() 
l <- sapply(1:4, function(x) {combn(x=c("c1", "c2", "c3", "c4"), m=x, simplify=F)}) 
l <- unlist(l, recursive=F) 
for (x in l) { 
    out[[paste(x, collapse="")]] <- f(x) 
} 
+0

我無法將我的表格轉換爲數據框架,因爲使用函數vennCounts得到該表格 – 2012-04-17 08:43:32

+0

此代碼是否會爲您的數據產生錯誤?我不熟悉bioconductor軟件包。但是爲什麼你不能將這個表格轉換爲矩陣或data.frame?轉換期間您收到錯誤消息? – DrDom 2012-04-17 09:10:54

+0

是的,我得到一個錯誤:「不能脅迫類'」VennCounts「'到一個data.frame」 – 2012-04-17 09:14:40