2016-06-13 4 views
1

データフレームの列の名前を付けようとしていますが、データフレームが動的に選択されています。なぜこれがうまくいかないのでしょうか?以下は例ですが、私の実際のケースでは、別のエラーが発生します。今のところ、私はエラーのいずれかの原因を知っていると思います。ファイル内動的に選択されたdata.frameの名前の列

エラー(ファイル名、「R」):さらに接続
を開くことができません:ファイルで
:警告メッセージを(ファイル名、「R」):
を開くことができませんファイル「DF」:そのようなファイルやディレクトリ

#ASSIGN data frame name dynamically 
> assign(as.character("df"), data.frame(c(1:10), c(11:20))) 
> 
#IT WOrked 
> df 
    c.1.10. c.11.20. 
1  1  11 
2  2  12 
3  3  13 
4  4  14 
5  5  15 
6  6  16 
7  7  17 
8  8  18 
9  9  19 
10  10  20 
> 
#Call the data frame dynamically, it works 
> eval(parse(text = c("df"))) 
    c.1.10. c.11.20. 
1  1  11 
2  2  12 
3  3  13 
4  4  14 
5  5  15 
6  6  16 
7  7  17 
8  8  18 
9  9  19 
10  10  20 
> 
#name the columns 
> colnames(df) <- c("a", "b") 
> df 
    a b 
1 1 11 
2 2 12 
3 3 13 
4 4 14 
5 5 15 
6 6 16 
7 7 17 
8 8 18 
9 9 19 
10 10 20 
> 
#name columns of dynamically chosen data frame, returns and error 
> colnames(eval(parse(text = c("df")))) <- c("c", "d") 
    Error in colnames(eval(parse(text = c("df")))) <- c("c", "d") : 
    target of assignment expands to non-language object 

答えて

14

Rは、あなたがassignとを使用したくないので、それは動作しません(なんてこった! )eval(parse())この種の基本的なものの。リスト!これが主がリストを作った理由です!

l <- list() 
l[["df"]] <- data.frame(c(1:10), c(11:20)) 
colnames(l[["df"]]) <- c("a","b") 
> l 
$df 
    a b 
1 1 11 
2 2 12 
3 3 13 
4 4 14 
5 5 15 
6 6 16 
7 7 17 
8 8 18 
9 9 19 
10 10 20 
+6

主は、あなたが –

+1

を意味する。しかししかししかし、 'setNames(evalの(as.name( "DF"))、C( "A"、 "B"))私は"のそれを保つでしょう ' –

+0

感謝マインド。 – user3385769

関連する問題