2012-03-29 6 views

答えて

3

おそらく正確な理由から、Rはそれが間違っていると言った:cbindに一緒にしようとしている2つの項目は、異なる数の行を持っています。

データフレームdはemtpyなので、0行もあります。どうやら、あなたのデータフレームdata(私たちにゼロの情報を提供してくれた)は、132680の行を持っています。

しようとしていることを実行するためのより良い方法があります(forループ内の列がしばしば最適ではないことがよくあります)。詳細は解説するのが難しいです。

+1

が –

+0

私の考えを抽出するためだったと再多分あります - 特定の目的のために既存のデータフレームの列を結合します.Eg:read.csv()文からのインポートの結果であるdata.frame()の列を検索します。文字クラス。もう一つの理由は、read.csvステートメントから作成されたdata.frame()の列がほんの少し必要なことです。 data.frame()がforループの前に初期化されていて、後でcbind()に解析されたオブジェクトの行の長さと等しい行ベクトルでいっぱいにする必要があることを認識しませんでした – Vni

0

上記の行に沿って解を解くことは可能ですが、そうしたくないかもしれません。あなたの目標は何ですか?この特定の例では

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" ... 
関連する問題