让我们说我有以下数据框
a <- as.integer(runif(20, 1, 30))
b <- as.integer(runif(20, 10, 30))
df <- data.frame(Sender = a, Receiver = b)
df
我想将两个列转换为因子:
var <- c("Sender", "Receiver")
df[var] <- lapply(var, factor)
str(df)
但事实证明,每个列中只有一个级别,而不是我示例中的唯一数字
'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 ...
当然,如果我单独做的话会有效:
df$Sender <- as.factor(df$Sender)
df$Receiver <- as.factor(df$Receiver)
有人可以解释原因吗?
答案 0 :(得分:3)
您实际上并未在此处使用原始数据,只是标签。
试试这样:
df <- as.data.frame(lapply(df, factor))
答案 1 :(得分:1)
你想要
df[] <- lapply(df, factor)