いくつかのワークフローの後に出力として表形式のデータを取得しましたが、この出力はS4Vectors::DataFrame
クラスに格納されていました。私は、因数分解された列を整数に変換しようと考えています。はい、私はas.integer
を使用して係数を落とそうとしましたが、行列があります。私はそれらをDataFrame
のオブジェクトに入れておきたい。どのように整数に因子を変換した後、元のクラスの型を保持する方法を教えてもらえますか?S4 'DataFrame`で因子を整数に変換する方法は?
私はDataFrame
で、この表形式のデータを得た: (実行DF
前に、S4Vectors
のインストールが必要とされている:library(S4Vectors)
)
DF <- DataFrame(
query=factor(c(7,17,15,4,7,15,13,19,4,6,13,19,6,11,17,10,11,10)),
subject=factor(c(7,17,15,4,21,21,13,13,20,20,19,19,6,11,9,1,18,10)),
score=c(4,4,7,8,11,11,12,12,13,13,13,13,15,21,38,48,49,54)
)
私は、このようにしてみました:
res <- sapply(DF, function(x) {
if(is.factor(x))
as.integer(x)
x
})
私の解決策が望まれていませんres
は行列になり、コードは非効率的なビットなので、私のために。私はこれについて最も簡単で最短の答えを出したいと思います(これを実現するための1行のコードのみ)。 factor列を整数に変換した後、それをDataFrame
として保存します。
私はそれを保つ特別な理由があることに注意してください。DataFrame
。私は可能な限りシンプルなソリューションを作るつもりです(計算上安く効率的です)。
これは私の所望の出力です:
desiredDF <- DataFrame(
query=as.integer(c(7,17,15,4,7,15,13,19,4,6,13,19,6,11,17,10,11,10)),
subject=as.integer(c(7,17,15,4,21,21,13,13,20,20,19,19,6,11,9,1,18,10)),
score=c(4,4,7,8,11,11,12,12,13,13,13,13,15,21,38,48,49,54)
)
DataFrame
クラスに保管しながら、どのように私は整数にDF
で因数分解列を変換することができますか?これを実現させるための考え方は?どうもありがとう:)
非常に接近していたが、私はこれを成し遂げるためにさらに多くの最も単純な方法を必要としています。これは1つのラインコードだけを行うことは可能ですか?上記のコードを単純化する関数はありますか? – datageek
Dunno man、 'sapply'は実際にはかなり効率的です。この関数は柔軟性を提供するので、 'colnames'の' data.frame'でも使用できます。 – JustGettinStarted