I have a one row data frame that looks like this:
Donor Treatment Timepoint
MK434_016 WT5 ST002_50uM 6hr
And a character string which looks like this:
[1] "AAACAAGCAAACAAGAATTCGGTT-1" "AAACAAGCAAACAATCATTCGGTT-1" "AAACAAGCAAACCTGAATTCGGTT-1" "AAACAAGCAAACTTGGATTCGGTT-1"
[5] "AAACAAGCAAAGACCCATTCGGTT-1" "AAACAAGCAAAGGTAAATTCGGTT-1"
I'd like to merge the two to create a data frame that looks like this:
Donor Treatment Timepoint
AAACAAGCAAACAAGAATTCGGTT-1 WT5 ST002_50uM 6hr
AAACAAGCAAACAATCATTCGGTT-1 WT5 ST002_50uM 6hr
AAACAAGCAAACCTGAATTCGGTT-1 WT5 ST002_50uM 6hr
etc...
I've tried merging them in several different ways using rbind() or paste() but can't figure out how to get the full data frame I'm looking for.
I'll first join them together without row names, as some tools honor them, some ignore them, and some actively remove them.
df2 <- cbind(df1[rep(1, length(strings)),], data.frame(barcode = strings))
df2
# Donor Treatment Timepoint barcode
# MK434_016 WT5 ST002_50uM 6hr AAACAAGCAAACAAGAATTCGGTT-1
# MK434_016.1 WT5 ST002_50uM 6hr AAACAAGCAAACAATCATTCGGTT-1
# MK434_016.2 WT5 ST002_50uM 6hr AAACAAGCAAACCTGAATTCGGTT-1
# MK434_016.3 WT5 ST002_50uM 6hr AAACAAGCAAACTTGGATTCGGTT-1
# MK434_016.4 WT5 ST002_50uM 6hr AAACAAGCAAAGACCCATTCGGTT-1
# MK434_016.5 WT5 ST002_50uM 6hr AAACAAGCAAAGGTAAATTCGGTT-1
From here, if you really want to remove the barcode
info from the columns and make them row names, it is simple enough:
rownames(df2) <- df2$barcode
df2$barcode <- NULL
df2
# Donor Treatment Timepoint
# AAACAAGCAAACAAGAATTCGGTT-1 WT5 ST002_50uM 6hr
# AAACAAGCAAACAATCATTCGGTT-1 WT5 ST002_50uM 6hr
# AAACAAGCAAACCTGAATTCGGTT-1 WT5 ST002_50uM 6hr
# AAACAAGCAAACTTGGATTCGGTT-1 WT5 ST002_50uM 6hr
# AAACAAGCAAAGACCCATTCGGTT-1 WT5 ST002_50uM 6hr
# AAACAAGCAAAGGTAAATTCGGTT-1 WT5 ST002_50uM 6hr
A quick dplyr
version:
library(dplyr)
df1[rep(1, length(strings)),] %>%
`rownames<-`(NULL) %>%
mutate(barcode = strings) %>%
tibble::column_to_rownames("barcode")
# Donor Treatment Timepoint
# AAACAAGCAAACAAGAATTCGGTT-1 WT5 ST002_50uM 6hr
# AAACAAGCAAACAATCATTCGGTT-1 WT5 ST002_50uM 6hr
# AAACAAGCAAACCTGAATTCGGTT-1 WT5 ST002_50uM 6hr
# AAACAAGCAAACTTGGATTCGGTT-1 WT5 ST002_50uM 6hr
# AAACAAGCAAAGACCCATTCGGTT-1 WT5 ST002_50uM 6hr
# AAACAAGCAAAGGTAAATTCGGTT-1 WT5 ST002_50uM 6hr
Data
df1 <- structure(list(Donor = "WT5", Treatment = "ST002_50uM", Timepoint = "6hr"), class = "data.frame", row.names = "MK434_016")
strings <- c("AAACAAGCAAACAAGAATTCGGTT-1", "AAACAAGCAAACAATCATTCGGTT-1", "AAACAAGCAAACCTGAATTCGGTT-1", "AAACAAGCAAACTTGGATTCGGTT-1", "AAACAAGCAAAGACCCATTCGGTT-1", "AAACAAGCAAAGGTAAATTCGGTT-1")