大きなデータフレームからすべての因子変数を選択するために使用しているループを作成しました。しかし、何らかの理由で列を索引付けするためにカウンターを使用すると、要素として読み取られないため、ループは機能しません。どうしてこれなの?そして、どのように私は仕事にこのループを取得することができます:カウンタダミー変数を使用してアクセスすると、列が要因として読み取られないのはなぜですか?
#Here's the loop:
y <- data.frame(c = 1:2661)
for (i in 1:ncol(x)){
ifelse(is.factor(x[i]) == FALSE, y <- cbind(y, x[i]), y <- y)
}
と問題が列を参照するために「I」を使用することで、明らかです。例:
#sample data
df <- as.data.frame(structure(c(2L, 2L, 2L, 2L, 2L),
.Label = c("female", "male"), class = "factor"))
names(df)[names(df) == "structure(c(2L, 2L, 2L, 2L, 2L), .Label = c(\"female\", \"male\"), class = \"factor\")"] <- "var"
#reference the column name directly
is.factor(df$var)
[1] TRUE
#use a counter to access the variable:
i <- 1
is.factor(df[i])
[1] FALSE
これはRと何か関係ありますか、または私のPCに何かがありますか? Rと何か関係がある場合、誰が何が起こっているのか、私のループを機能させる方法を説明できるのでしょうか?
をアセスするための2つのオプションがありますファクタは、 'is.factor(df [、i])'と書くだけです。列ではなく要素を詰め込むためにコンマを書いてください。 – R18
をdf [i]とすると、data.frameが得られます.df [、i]を指定すると、プリミティブ型にカラムをドロップします。タイプ - >? "[" < - in R in more。 –
[This posts](https://stackoverflow.com/questions/36777567/is-there-a-logical-way-to-think-about-list-indexing/36815401)も読む価値があります。 – lmo