0
我正在嘗試向數據框添加彙總行,詳細說明每列的級別。我遇到了一個問題,在整個框架中應用關卡功能。我想原因是,單獨處理列的係數向量處理,但在使用的應用功能,他們被視爲字符:爲什麼在應用子集時數據框中的列會改變類?
a = c("a","b","c")
b = c("d","e","f")
m = cbind(a,b)
df = as.data.frame(m)
class(df[,1])
[1] "factor"
apply(df, MARGIN=2, class)
a b
"character" "character"
我認爲這是問題的原因:
levels(df[,1])
[1] "a" "b" "c"
apply(df, MARGIN=2, levels)
NULL
我查看了有關應用程序,數據框和網絡的幫助文檔。有人可以解釋爲什麼這是嗎?
這是因爲'apply'強求你data.frame到'matrix'而那些只能有一個類中的所有「列」(因爲他們是隻是一個具有維度屬性的向量) –
並從'?matrix':'as.matrix'的默認方法調用'as.vector(x)',因此例如強制要素向量。 –
應用第一次檢查以查看所有數據是否爲數字。如果它是調用'as.matrix'。如果不是,則調用'as.array'。然而,'as.array'然後調用'as.vector'進行@WeihuangWong表示的轉換。 –