Skip to content
Prev 18887 / 29559 Next

help with matrix

Hi,

Please don't cross-post: choose the most appropriate email list and
send your question only to that one. The best place for general
questions like this is R-help.
On Fri, Jul 19, 2013 at 9:12 AM, K?tia Emidio <kat.emidio at gmail.com> wrote:
Attaching your data isn't nearly as useful as using dput() to include
it directly in the email. Many people dislike opening unsolicited
attachments, and the mail server strips most of them off anyway.

There are almost certainly more elegant ways to accomplish this.
Please move the discussion to R-help if you wish to continue it.

# recreate your data
adist <- structure(list(Nauc_calo_1 = c(0, 118.74, 172.27, 152.72, 119.45,
85.351), Nauc_calo_2 = c(118.74, 0, 165.8, 141.68, 67.186, 151.47
), Nauc_calo_3 = c(172.27, 165.8, 0, 24.331, 98.671, 104.72),
    Nauc_calo_4 = c(152.72, 141.68, 24.331, 0, 74.673, 93.503
    ), Nauc_calo_5 = c(119.45, 67.186, 98.671, 74.673, 0, 108.95
    ), Nauc_calo_6 = c(85.351, 151.47, 104.72, 93.503, 108.95,
    0)), .Names = c("Nauc_calo_1", "Nauc_calo_2", "Nauc_calo_3",
"Nauc_calo_4", "Nauc_calo_5", "Nauc_calo_6"), class = "data.frame",
row.names = c("Nauc_calo_1",
"Nauc_calo_2", "Nauc_calo_3", "Nauc_calo_4", "Nauc_calo_5", "Nauc_calo_6"
))

# identify which elements are >= 50
index50 <- data.frame(which(adist >= 50, arr.ind=TRUE))
# take unique pairs from your symmetric matrix
index50 <- subset(index50, row < col)
# get the associated names
results50 <- data.frame(row = rownames(adist)[index50$row], col =
colnames(adist)[index50$col], stringsAsFactors = FALSE)

Sarah