上記の行に沿って解を解くことは可能ですが、そうしたくないかもしれません。あなたの目標は何ですか?この特定の例では
d <- data.frame(matrix(ncol=0,nrow=5),stringsAsFactors=FALSE)
set.seed(101)
dat <- matrix(sample(LETTERS,replace=TRUE,size=10),ncol=2)
for (i in 1:ncol(dat)) { d <- cbind(d,dat[,i])}
d2 <- as.data.frame(dat,stringsAsFactors=FALSE)
dat
はcharacter
の行列です。 (あなたの後にcbind()
呼び出しがとにかく因子への変換を誘発するので、データフレームの属性を設定stringsAsFactors=FALSE
がないを行うことノート!)d
は2つのfactor
列を持つデータフレームです。そしてd2
は(???)あなたが何を望むか、データフレームに変換元のデータセット... S /しばしばひどく最適でない/しばしばひどいアイデア
> str(dat)
chr [1:5, 1:2] "J" "B" "S" "R" "G" "H" "P" "I" "Q" "O"
> str(d)
'data.frame': 5 obs. of 2 variables:
$ dat[, i]: Factor w/ 5 levels "B","G","J","R",..: 3 1 5 4 2
$ dat[, i]: Factor w/ 5 levels "H","I","O","P",..: 1 4 2 5 3
> str(d2)
'data.frame': 5 obs. of 2 variables:
$ V1: chr "J" "B" "S" "R" ...
$ V2: chr "H" "P" "I" "Q" ...
が –
私の考えを抽出するためだったと再多分あります - 特定の目的のために既存のデータフレームの列を結合します.Eg:read.csv()文からのインポートの結果であるdata.frame()の列を検索します。文字クラス。もう一つの理由は、read.csvステートメントから作成されたdata.frame()の列がほんの少し必要なことです。 data.frame()がforループの前に初期化されていて、後でcbind()に解析されたオブジェクトの行の長さと等しい行ベクトルでいっぱいにする必要があることを認識しませんでした – Vni