2017-01-15 5 views
0

の演算子は私がメートルに特定の値について共同利用およびR

for (i in 1:12) { 
    m<-as.data.frame(matrix(100,nrow = nrow(d3),ncol = ncol(d3))) 
    if (!is.factor(d3[,i])){ 
    m[,i]<-d3[,i] 
    } 
    } 

をデータフレームD3からすべての非要因を収集し、表に入れたい「場合」私は(例えばi = 2の場合)、私は欲しいものを得る。しかし、ループは機能しません。上記のコードで私はどこで間違いを犯すのですか?

+0

** dplyr **パッケージから** mutate_if **機能を試すことができます。次のような何かが** dplyr :: mutate_if(!is.factor)%>%as.table()** – Ferdi

+0

あなたの質問を編集して "何を意味するかを記述してください。うまくいかない"。 – Uwe

+0

と 'd3'データを提供することは大きな助けになります。 – SymbolixAU

答えて

4

ループで毎回mを再作成しています。それは外にあるべきです。

m <- as.data.frame(matrix(100, nrow = nrow(d3), ncol = ncol(d3))) 
for (i in 1:12) { 
    if (!is.factor(d3[, i])) { 
    m[, i] <- d3[, i] 
    } 
} 

しかし、実際にはベクトル化操作を使用してすべてを一度に行う必要があります。

nonf <- !sapply(d3, is.factor) 
m[, nonf] <- d3[, nonf] 
関連する問題