Один из вариантов - извлечь diag
v1 <- diag(as.matrix(percentage))
paste0(names(v1), " (", v1, "%)")
#[1] "PC1 (52.89%)" "PC2 (31.69%)" "PC3 (6.49%)" "PC4 (3.82%)"
данные
percentage <- structure(list(PC1 = c(52.89, 0, 0, 0), PC2 = c(0, 31.69, 0,
0), PC3 = c(0, 0, 6.49, 0), PC4 = c(0, 0, 0, 3.82)),
class = "data.frame", row.names = c("PC1", "PC2", "PC3", "PC4"))