web-dev-qa-db-ja.com

データフレームの2つの列を名前付きベクトルに変換する

複数行2列を変換する必要がありますdata.frameを名前付き文字ベクトルに。俺の data.frameは次のようになります。

dd = data.frame(crit = c("a","b","c","d"), 
                name = c("Alpha", "Beta", "Caesar", "Doris")
                )

そして私が実際に必要とするのは:

whatiwant = c("a" = "Alpha",
              "b" = "Beta",
              "c" = "Caesar",
              "d" = "Doris")
47
Stefan F

names関数を使用します。

whatyouwant <- as.character(dd$name)
names(whatyouwant) <- dd$crit

as.characterdata.frameは、文字をデフォルト設定の要素に変換するため、read.tableが必要です。

ワンライナーが必要な場合:

whatyouwant <- setNames(as.character(dd$name), dd$crit)
58
Roland

_dd$name_からベクトルを作成し、names()を使用して名前を追加できますが、structure()を使用すると、すべてを1つのステップで実行できます。

_whatiwant <- structure(as.character(dd$name), names = as.character(dd$crit))
_
21
alexwhan

種類については、splitunlistを試してください。

unlist(split(as.character(dd$name), dd$crit))
#        a        b        c        d 
#  "Alpha"   "Beta" "Caesar"  "Doris" 

これにも使用できます。

tibble::deframe()
3
John Waller