我希望将所有fast1和fast2文件连接起来,用于Sam_1中的每个唯一值。
如:cat SRR3493476_1.fastq SRR3493477_1.fastq SRR3493475_1.fastq > L1-A_1.fastq
cat SRR3493476_2.fastq SRR3493477_2.fastq SRR3493475_2.fastq > L1-A_2.fastq
Run_s Sam_1 fast1 fast2
SRR3493476 L1-A SRR3493476_1.fastq SRR3493476_2.fastq
SRR3493477 L1-A SRR3493477_1.fastq SRR3493477_2.fastq
SRR3493475 L1-A SRR3493475_1.fastq SRR3493475_2.fastq
SRR3493483 L1-B SRR3493483_1.fastq SRR3493483_2.fastq
SRR3493481 L1-B SRR3493481_1.fastq SRR3493481_2.fastq
SRR3493482 L1-B SRR3493482_1.fastq SRR3493482_2.fastq
SRR3493487 L1-C SRR3493487_1.fastq SRR3493487_2.fastq
SRR3493484 L1-C SRR3493484_1.fastq SRR3493484_2.fastq
SRR3493485 L1-C SRR3493485_1.fastq SRR3493485_2.fastq
SRR3493486 L1-D SRR3493486_1.fastq SRR3493486_2.fastq
SRR3493478 L1-D SRR3493478_1.fastq SRR3493478_2.fastq
SRR3493479 L1-D SRR3493479_1.fastq SRR3493479_2.fastq发布于 2017-10-12 19:20:45
我使用tapply和paste生成命令:
r1 = with(dd, tapply(fast1, Sam_1, paste, collapse = " "))
for (i in seq_along(r1)) {
r1[[i]] = sprintf("cat %s > %s.fastq", r1[[i]], names(r1)[i])
}
r1
# L1-A
# "cat SRR3493476_1.fastq SRR3493477_1.fastq SRR3493475_1.fastq > L1-A.fastq"
# L1-B
# "cat SRR3493483_1.fastq SRR3493481_1.fastq SRR3493482_1.fastq > L1-B.fastq"
# L1-C
# "cat SRR3493487_1.fastq SRR3493484_1.fastq SRR3493485_1.fastq > L1-C.fastq"
# L1-D
# "cat SRR3493486_1.fastq SRR3493478_1.fastq SRR3493479_1.fastq > L1-D.fastq" 然后,可以使用使用system的for循环来执行每个命令(lapply(r1, system))。
我将继续使用fast2列执行类似的步骤,或者将上面的内容转换成一个很好的函数来完成这两种操作,作为读者的练习。
使用这些数据:
dd = read.table(text = " Run_s Sam_1 fast1 fast2
SRR3493476 L1-A SRR3493476_1.fastq SRR3493476_2.fastq
SRR3493477 L1-A SRR3493477_1.fastq SRR3493477_2.fastq
SRR3493475 L1-A SRR3493475_1.fastq SRR3493475_2.fastq
SRR3493483 L1-B SRR3493483_1.fastq SRR3493483_2.fastq
SRR3493481 L1-B SRR3493481_1.fastq SRR3493481_2.fastq
SRR3493482 L1-B SRR3493482_1.fastq SRR3493482_2.fastq
SRR3493487 L1-C SRR3493487_1.fastq SRR3493487_2.fastq
SRR3493484 L1-C SRR3493484_1.fastq SRR3493484_2.fastq
SRR3493485 L1-C SRR3493485_1.fastq SRR3493485_2.fastq
SRR3493486 L1-D SRR3493486_1.fastq SRR3493486_2.fastq
SRR3493478 L1-D SRR3493478_1.fastq SRR3493478_2.fastq
SRR3493479 L1-D SRR3493479_1.fastq SRR3493479_2.fastq", header = T)发布于 2017-10-12 18:43:12
您也可以用dplyr + tidyr来尝试这一点。
library(dplyr)
library(tidyr)
df %>%
gather(variable, value, fast1:fast2) %>%
mutate(variable = sub("(fast)(\\d)", "\\2.\\1q", variable)) %>%
unite(Sam_1, c("Sam_1", "variable"), sep = "_") %>%
group_by(Sam_1) %>%
summarize(value = paste(value, collapse = " ")) %>%
with(paste("cat", value, ">", Sam_1)) %>%
sapply(system)命令:
[1] "cat SRR3493476_1.fastq SRR3493477_1.fastq SRR3493475_1.fastq > L1-A_1.fastq"
[2] "cat SRR3493476_2.fastq SRR3493477_2.fastq SRR3493475_2.fastq > L1-A_2.fastq"
[3] "cat SRR3493483_1.fastq SRR3493481_1.fastq SRR3493482_1.fastq > L1-B_1.fastq"
[4] "cat SRR3493483_2.fastq SRR3493481_2.fastq SRR3493482_2.fastq > L1-B_2.fastq"
[5] "cat SRR3493487_1.fastq SRR3493484_1.fastq SRR3493485_1.fastq > L1-C_1.fastq"
[6] "cat SRR3493487_2.fastq SRR3493484_2.fastq SRR3493485_2.fastq > L1-C_2.fastq"
[7] "cat SRR3493486_1.fastq SRR3493478_1.fastq SRR3493479_1.fastq > L1-D_1.fastq"
[8] "cat SRR3493486_2.fastq SRR3493478_2.fastq SRR3493479_2.fastq > L1-D_2.fastq"数据:
df = read.table(text = " Run_s Sam_1 fast1 fast2
SRR3493476 L1-A SRR3493476_1.fastq SRR3493476_2.fastq
SRR3493477 L1-A SRR3493477_1.fastq SRR3493477_2.fastq
SRR3493475 L1-A SRR3493475_1.fastq SRR3493475_2.fastq
SRR3493483 L1-B SRR3493483_1.fastq SRR3493483_2.fastq
SRR3493481 L1-B SRR3493481_1.fastq SRR3493481_2.fastq
SRR3493482 L1-B SRR3493482_1.fastq SRR3493482_2.fastq
SRR3493487 L1-C SRR3493487_1.fastq SRR3493487_2.fastq
SRR3493484 L1-C SRR3493484_1.fastq SRR3493484_2.fastq
SRR3493485 L1-C SRR3493485_1.fastq SRR3493485_2.fastq
SRR3493486 L1-D SRR3493486_1.fastq SRR3493486_2.fastq
SRR3493478 L1-D SRR3493478_1.fastq SRR3493478_2.fastq
SRR3493479 L1-D SRR3493479_1.fastq SRR3493479_2.fastq", header = TRUE, stringsAsFactors = FALSE)发布于 2017-10-12 19:43:33
你可以一举做到这一点
data <- read.table(text="Run_s Sam_1 fast1 fast2
SRR3493476 L1-A SRR3493476_1.fastq SRR3493476_2.fastq
SRR3493477 L1-A SRR3493477_1.fastq SRR3493477_2.fastq
SRR3493475 L1-A SRR3493475_1.fastq SRR3493475_2.fastq
SRR3493483 L1-B SRR3493483_1.fastq SRR3493483_2.fastq
SRR3493481 L1-B SRR3493481_1.fastq SRR3493481_2.fastq
SRR3493482 L1-B SRR3493482_1.fastq SRR3493482_2.fastq
SRR3493487 L1-C SRR3493487_1.fastq SRR3493487_2.fastq
SRR3493484 L1-C SRR3493484_1.fastq SRR3493484_2.fastq
SRR3493485 L1-C SRR3493485_1.fastq SRR3493485_2.fastq
SRR3493486 L1-D SRR3493486_1.fastq SRR3493486_2.fastq
SRR3493478 L1-D SRR3493478_1.fastq SRR3493478_2.fastq
SRR3493479 L1-D SRR3493479_1.fastq SRR3493479_2.fastq",
header=TRUE, stringsAsFactors=FALSE)
groups1 <- by(data$fast1, data$Sam_1, as.character)
groups2 <- by(data$fast2, data$Sam_1, as.character)
groups <- c(groups1, groups2)
fnames <- paste0(names(groups), "_", rep(1:2, each=length(unique(data$Sam_1))))
names(groups) <- fnames
for (i in 1:length(groups)) {
file <- shQuote(paste0(fnames[i], ".fastq"))
system(paste("cat", paste(groups[[i]], collapse=" "), ">", file))
}文件名将是L1-A_1.fastq、L1-B_1.fastq等。
https://stackoverflow.com/questions/46716286
复制相似问题