Well, one request to replace column names of a data frame from another one. In case, there is no match, keep the original one.

=======================================
> bar=read.csv("bar.txt", sep="\t", header = T, strip.white = T,stringsAsFactors = F)
> bartable=read.csv("table.tsv", sep="\t", header = T, strip.white = T, stringsAsFactors = F)

> bartable
gene ATAGTTCTCGT GAAGCAGTATG GAAGACTTGGT AAAAAAAAAA
1 gene1 0 0 3 0
2 gen1e2 0 0 0 0

> bar
Sample Barcode
1 sc1 CCTAGATTAAT
2 sc2 GAAGACTTGGT
3 sc3 GAAGCAGTATG
4 sc4 GGTAACCTGAC
5 sc5 ATAGTTCTCGT
> for (i in colnames(bartable)){
     if ( i %in% bar$Barcode){
     colnames(bartable)[match(i,colnames(bartable))] =as.character (bar [which    (bar$Barcode==i),][1])
    }
}

> bartable
gene sc5 sc3 sc2 AAAAAAAAAA
1 gene1 0 0 3 0
2 gen1e2 0 0 0 0
================================