我有一个.tsv
文件,我将其导入为data.frame:
df = read.table(file.choose(), sep = '\t', header = TRUE)
该文件由531行和80列组成。 由此,我必须在第三列中提取具有相同值的行。
所以,我试过这个:
cl <- nrow(df)
for (i in 1:cl){
store<-df[df[i,3]==df[[3]],]
}
代码工作,它识别相等的行,但循环存在问题,因为它只存储最后一行(加上等于)。
最后,如何将每个第i行(加上等于)存储在不同的变量中?
例如,假设文件为:
df[1:4,1:4]
Sample Gene Variant Chr
1 48_S12 AATF GC>GC/G 17
2 48_S12 AATF G>C/C 17
3 48_S12 AATF G>G/A 17
4 48_S12 AATF G>G/A 17
在这种特殊情况下,我的代码应该以相同的顺序存储行,但它只存储最后2行。另外,我希望它将前2行存储在2个不同的变量中,最后2个存储在同一个变量中(由于相等的第三列&#39; s值)。
答案 0 :(得分:0)
最简单的方法是将结果数据帧存储在一个列表中,您可以在其中访问每个数据帧。
require(dplyr)
variant_types <- unique(as.character(df$Variant))
tmp <- list()
for (k in 1:length(variant_types)) {
tmp[[k]] <- df %>% filter(Variant == variant_types[k])
}
第二个数据框将存储在tmp[[2]]
中,例如:
> tmp
[[1]]
Sample Gene Variant Chr
1 48_S12 AATF GC>GC/G 17
[[2]]
Sample Gene Variant Chr
1 48_S12 AATF G>C/C 17
[[3]]
Sample Gene Variant Chr
1 48_S12 AATF G>G/A 17
2 48_S12 AATF G>G/A 17