Based on @Cath's initial comment, converting the character vectors into factors seems like it might provide a workaround by mapping the text values to integers that can then be used in the function. Edit: be aware that reordering the factor levels changes the final result. I don't know enough about the discordance function to say if this is the expected behavior.
# Original Character vectors
arg1 <- c("b","c","a","d")
arg2 <- c("b","c","d","a")
# Translate character vectors into factors
all_levels <- unique(arg1, arg2)
arg1 <- factor(arg1, levels = all_levels)
arg1
[1] b c a d
Levels: b c a d
arg2 <- factor(arg2, levels = all_levels)
arg2
[1] b c d a
Levels: b c a d
# This maps each text string to a number
as.numeric(arg1)
[1] 1 2 3 4
as.numeric(arg2)
[1] 1 2 4 3
# Use the underlying numeric data in the function
require(asbio)
sum(ConDis.matrix(as.numeric(arg1), as.numeric(arg2))==-1,na.rm=TRUE)
[1] 1
Edit: sorting the factor levels changes the final output
arg1 <- c("b","c","a","d")
arg2 <- c("b","c","d","a")
all_levels <- sort(unique(arg1, arg2)) # sorted
arg1 <- factor(arg1, levels = all_levels)
arg2 <- factor(arg2, levels = all_levels)
sum(ConDis.matrix(as.numeric(arg1), as.numeric(arg2))==-1,na.rm=TRUE)
[1] 5