2016-12-16 71 views
0

比方說,我有以下的數據幀lapply(X,as.factor)只返回一個水平

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) 

有人可以解釋爲什麼嗎?

回答

1

你想

df[] <- lapply(df, factor) 
3

你實際上並沒有使用這裏原來的數據,只有標籤。

試試這樣說:

df <- as.data.frame(lapply(df, factor))