2012-04-17 54 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