2016-07-01 16 views
0

これは簡単なことですが、わかりません。データテーブルの列属性をルックアップテーブルの列値と一致させる方法R

私はN列のデータテーブルと、New.NameとNumberという2つの列を持つルックアップテーブルを持っています。データテーブルの列の名前を、Numberで一致するルックアップテーブルにあるNew.Nameに変更したいとします。すべての列名がルックアップテーブルにNew.Nameを持つわけではありません。データテーブル内の数値は、列属性として格納されます。だから私は、ルックアップテーブルの数値列にある値にデータテーブルの列属性を一致させる必要があります。

例:

df <- as.data.frame(matrix(sample(1:20), ncol = 5)) 
colnames(df) <- c('abc', 'def', 'ghi', 'jkl', 'mno') 
for (i in 1:5) attr(df[,i], 'Number') <- i 

lookup <- data.frame(Number=c(2,3),New.Name=c('x','y')) 

、上の例のxとyにDEF列と列GHIの名前を変更するための最良の方法は何ですか?

答えて

1

私たちは、代わりに新しいものを入力するので、それは既存の答えを編集して復活する方が良いでしょう

names(df)[match(lookup$Number, unlist(lapply(df, attributes)))] <- as.character(lookup$New.Name) 
names(df) 
#[1] "abc" "x" "y" "jkl" "mno" 
0

...たぶん、これは動作しますので、簡単ではありません:

colnames(df)[sapply(lookup$Number, function(x) which(sapply(df,attr, 'Number')==x))] <- as.character(lookup$New.Name) 
+0

によってこれを行うことができます。 –

+0

おかげで@MatthewLundberg、私はこれを次回行うでしょう – HubertL

関連する問題