2012-01-27 9 views
2

は、以下のコードを検討して期待通りに動作しない:連結するデータフレーム値は

> a <- data.frame(name=c('a','b','c')) 
> b <- data.frame(type=a$name[1]) 
> c <- data.frame(type=c(a$name[1],a$name[2])) 
> b 
    type 
1 a 
> c 
    type 
1 1 
2 2 

b$typeインデックス番号の値をとるc$type一方aの値は、実際の割り当てられた値を持たない理由(1および2)?

答えて

4

まあ、$名は要因、ない文字ベクトルであると(c関数は、現在の要素を処理していないため)あなたはそのような要因を連結することはできません。因数は実際にはlevels属性(およびクラス)を持つ整数ベクトルであるため、c関数は単に整数値を使用します。おそらくバグと見なすことができます。

c <- data.frame(type=unlist(list(a$name[1], a$name[2]))) 

別の方法は、文字ベクトルに変換することである:

c <- data.frame(type=c(as.character(a$name[1]), as.character(a$name[2]))) 

第三の方法はである因子を結合する

一つの方法は、この場合の特別なコードを持つ、unlistを使用することによるものです開始時の文字ベクタを使用してください:

a <- data.frame(name=c('a','b','c'), stringsAsFactors=FALSE) 
c <- data.frame(type=c(a$name[1],a$name[2])) 
関連する問題