【发布时间】:2012-06-22 12:29:26
【问题描述】:
我有一个带有一些布尔值 (1/0) 的数据框,如下所示(抱歉,我不知道如何将其制成智能表)
Flag1.Sam Flag2.Sam Flag3.Sam Flag1.Ted Flag2.Ted Flag3.Ted
probe1 0 1 0 1 0 0
probe2 0 0 0 0 0 0
probe3 1 0 0 0 0 0
probe4 0 0 0 0 0 0
probe5 1 1 0 1 0 0
我有 64 个样本(Sam/Ted....等),它们位于名为 files 的列表中,即;
files <- c("Sam", "Ted", "Ann", ....)
我想创建一个列,对每个样本的标志值求和以创建以下内容:
Sam Ted
probe1.flagsum 1 1
probe2.flagsum 0 0
probe3.flagsum 1 0
probe4.flagsum 0 0
probe5.flagsum 2 1
我对 R 相当陌生,试图在需要了解的基础上学习,但我尝试了以下方法:
for(i in files) {
FLAGS$i <- cbind(sapply(i, function(y) {
#greping columns to filter for one sample
filter1 <- grep(names(filters), pattern=y)
#print out the summed values for those columns
FLAGS$y <-rowSums(filters[,(filter1)])
}
}
上面的代码不起作用,我有点迷失方向。
谁能帮我解决这个问题或指出我要使用的命令/工具的正确方向。
谢谢。
【问题讨论】:
-
请不要以“R:”开头你的问题;这就是标签的用途
标签: r for-loop pattern-matching aggregate reshape