私は、Excelファイルからユーザー提供のグループ名を読み取るバイオインフォマティクスの光沢のあるアプリを作っています。これらの名前は非定型的に有効な名前である可能性があるため、内部的に有効な名前として表現したいと思います。レベルを保持しながらRの要素から構文的に有効な名前を作成する
例として、私はこの入力持つことができます。理想的には
(grps <- as.factor(c("T=0","T=0","T=4-","T=4+","T=4+")))
[1] T=0 T=0 T=4- T=4+ T=4+
Levels: T=0 T=4- T=4+
を、私は有効な名前を作るためにRをしたいと思いますが、同じグループ/レベルを維持し、例えば以下の罰金のようになります。 "T.0" "T.0" "T.4minus" "T.4plus" "T.4plus"
ただし、make.names()を使用すると、無効な文字はすべて同じcharaterに変換されます。
(grps2 <- as.factor(make.names(grps)))
[1] T.0 T.0 T.4. T.4. T.4.
Levels: T.0 T.4.
したがって、T = 4-とT = 4 +の両方に同じ名前が与えられ、レベルが失われます(後続の分析で問題を引き起こします)。また、ユニークな設定= TRUEが問題を解決しない、
(grps3 <- as.factor(make.names(grps,unique=TRUE)))
[1] T.0 T.0.1 T.4. T.4..1 T.4..2
Levels: T.0 T.0.1 T.4. T.4..1 T.4..2
グループ理由はT = 4 +は、2つの異なるグループに分割され、レベルが獲得されます。
誰もが、同じレベルを維持しながら、有効な名前に要素を組み込むことが一般的には可能な方法を知っていますか? ユーザーの入力は大きく異なる可能性があるので、ここで手動で「 - 」を「マイナス」に置き換えても機能しません。
ご協力いただきありがとうございます。あなたが行うことができますplyr
からmapvalues
機能付き
'make.unique'関数は、' make.names'の後にこれを解決するために適用できます。 – JDL
これらのラベルが構文上無効であると思われる理由を明確にしてください。追求している構文は、オブジェクトの名前として使用する場合にのみ必要です。 – Benjamin
@ JDL、私が正しいなら、一度make.namesが適用されると、グループは失われてしまいます。ユニークな仕事はもうありません。 – MartijnVanAttekum