2017-10-29 1 views
-1

私は私は私が必要なものを強要/取得することができますas.character(df[x,y])as.<whatever>df[x,y]を使用している場合、私のデータフレームから毎回Rデータフレーム内の単一要素にアクセスすると、Listを返すことがありますか?

私が見つけるように見えるカント何/見つけ出す考え出した理由です。以下の詳細。


私は(1列目か何か)df[1,1]にアクセス私は

df[1,1] 
[1] a 
Levels: a b c 

を取得するが、私は1,3にアクセスするときに私が使用している場合には、その後、細かい

> df[1,3] 
[1] 10 

を動作しますが、as.character()できます。

> as.character(df[1,1]) 
[1] "a" 

データフレームは、このライン

df = data.frame(names = c("a","b","c"), size = c(1,2,3),num = c(10,20,30)) 
> df 
     names size num 
    1  a 1 10 
    2  b 2 20 
    3  c 3 30 

しかし、このデータフレーム

imp2met = read.csv('tomet.csv', header = TRUE, sep=",",dec='.') 
> imp2met 
     unit mult ret 
1  (yd) 0.9100 (m) 
2  (in) 2.5200 (cm) 
3 ..... 

に私は1,3

> imp2met[1,3] 
[1] (m) 
Levels: (c) (cm) (cm^2) .... 
> 
> as.character(imp2met[1,3]) 
[1] "(m)" 

ため、これらの結果を得るを使用して構築されました

なぜ「ランダム」なのでしょうか?なぜ私はas.<whatever>()が必要なのですか?

+2

あなたは 'を使用します。​​'異なるタイプ間で変換するとき。あなたの場合は、 'factors'を' characters'に変換しています。 Rの 'factor'データ型についてあまり知らないようです。 – Suren

+0

はい、私が行っていたチュートリアルでは要因は言及していませんでした。私はそれらを見た、ありがとう! –

答えて

1

data.frameデフォルトでは、文字ベクトルを係数に変換します。これを引数で変更することもできますstringsAsFactors=FALSE

また、[を使用してデータフレームをサブセット化する場合は、drop=FALSE引数を追加して結果を単純化することもできます。

+1

'df = data.frame(names = c(" a "、" b "、" c ")、size = c(1,2,3)、num = c(10,20,30)、stringsAsFactors = FALSE ) ' – vaettchen

+0

例のおかげで、彼らはすべて私のデータセットに取り組んだ。 –

関連する問題