let's say I have the following dataframe
a <- as.integer(runif(20, 1, 30))
b <- as.integer(runif(20, 10, 30))
df <- data.frame(Sender = a, Receiver = b)
df
I want to transform both columns into factor:
var <- c("Sender", "Receiver")
df[var] <- lapply(var, factor)
str(df)
But it turns out that there is just one level in each column instead of as many as unique numbers in my example
'data.frame': 20 obs. of 2 variables:
$ Sender : Factor w/ 1 level "Sender": 1 1 1 1 1 1 1 1 1 1 ...
$ Receiver: Factor w/ 1 level "Receiver": 1 1 1 1 1 1 1 1 1 1 ...
Of course if works if I do it separately:
df$Sender <- as.factor(df$Sender)
df$Receiver <- as.factor(df$Receiver)
Can someone explain why?