2016-08-11 3 views
0

私はいくつかの列がFactorsとして扱われ、他は列として扱われるR dataFrameを作成しようとしています。 データフレームに `stringsAsFactors`を混ぜてください

fruits <- data.frame(fruit = character(), descr = character()) 
fruits <- rbind(fruits, data.frame(fruit = "apple", descr = "jjrkgnser")) 
fruits <- rbind(fruits, data.frame(fruit = "apple", descr = "aprtgh")) 
fruits <- rbind(fruits, data.frame(fruit = "pear", descr = "akjreg")) 

ここで、両方の列が要因として扱われ、そしてfruitsデータフレームの行が存在するように私はdescr列のような多くの要因になってしまいます。

descrを文字列として扱うにはどうすればよいですか?fruitを因子として使用しますか? stringsAsFactors = FALSEを使用すると、すべての列に適用されます。

編集

私はそうエレガントではない、このソリューションをハッキング:

fruits <- data.frame(fruit = factor(), path = character(), stringsAsFactors = FALSE) 
fruits <- rbind(fruits, data.frame(fruit = factor("apple"), path = "jjrkgnser", stringsAsFactors = FALSE)) 
fruits <- rbind(fruits, data.frame(fruit = factor("apple"), path = "aprtgh", stringsAsFactors = FALSE)) 
fruits <- rbind(fruits, data.frame(fruit = factor("pear"), path = "akjreg", stringsAsFactors = FALSE)) 

> str(fruits) 
'data.frame': 3 obs. of 2 variables: 
$ fruit: Factor w/ 2 levels "apple","pear": 1 1 2 
$ path : chr "jjrkgnser" "aprtgh" "akjreg" 
を行うと、要件に適合します。 が好きですか方法はありますか?

+2

使用からdata_frameを使用して、 '' as.factor'とas.character'に指示します。 – AntoniosK

+2

スクリプトの一部として 'rbind'を使用していますか?一度にデータセット全体を作成しないのはなぜですか? 'fruits < - data.frame(fruit = c(" apple "、" apple "、" pear ")、descr = I(c(" jjrkgnser "、" aprtgh "、" akjreg ")))のようなものです。あなたのコードは、あらかじめメモリを割り振らずにオブジェクトが成長しているので、複雑すぎて非効率です。 –

+0

@AntoniosKあなたは答えとして投稿してもよろしいですか?私はどのように把握することはできません。 –

答えて

1
# creating the dataset (no usage of rbind if possible) with factor columns by default 
fruits <- data.frame(fruit = c("apple", "apple", "pear"), 
        path = c("jjrkgnser", "aprtgh", "akjreg")) 

# transform this column to a character vector 
fruits$path = as.character(fruits$path) 
+0

よかった、ありがとう!そして、それは私の成長する物体でも機能します。 –

1

rbindを例示的な例として使用しているのか、ユースケースとして使用しているのかわかりません(データをそのように拡張するのは非常に非効率です)。しかし、それが必要であると仮定すると、倹約別々に列毎に、必要に応じて(dplyrらパッケージ生態系における)tibbleパッケージ

library(tibble) 
fruits <- data_frame(fruit = factor(), descr = character()) 
fruits <- rbind(fruits, data_frame(fruit = factor("apple"), descr = "jjrkgnser")) 
fruits <- rbind(fruits, data_frame(fruit = factor("apple"), descr = "aprtgh")) 
fruits <- rbind(fruits, data_frame(fruit = factor("pear"), descr = "akjreg")) 
+0

良い解決策、私は自分自身の使用を念頭に置いておくつもりです。私の生産環境は0.4.3で、まだ出荷されていません。私はそれを完全に支配しておらず、むしろ依存関係を維持しています。 –

関連する問題