On May 5, 2011, at 6:28 PM, J wrote:

Hi, I'm requesting you don't berate me for asking this question:

I clearly don't have the gist of factors.

I have two dataframes, A and B.

Each of them has a column containing strings (they're labels).

I want to, one-by-one in a loop, compare the particular string in an entry from dataframe A to an entry in B, to see if they're the same.

The problem, when posing the question:
searchID1 <- A[['label']][i]
possMatch1 <- B[['label']][j]
searchID1 == possMatch1

I get the error:
Error in Ops.factor(searchID1, possMatch1) :
 level sets of factors are different

I presume this is because the set of possible values in the 'labels' columns, respectively in A and B, differ. In my case, I'm not interested in this at all; I just want to compare individual entries from the two dataframes in a pair-wise fashion.

Can I strip the "factors" associated with the entries? Is there a better way?

Use as.character around the factors. Assuming they have equal nummbers of rows, then no loop is needed:

searchID1 <- as.character(A[['label']])
possMatch1 <- as.character(B[['label']])
searchID1 == possMatch1  # returns pair-wise logical vector

And if the number of rows are not equal, then you need to express your problem more clearly (and the dyadic function %in% is probably neededt)


--
David Winsemius, MD
West Hartford, CT

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to