2017-09-26 11 views
0

Rにインポートするときに、,の列名と異なる種類の特殊文字を持つ大きなデータセットがあります。Rが特殊文字を列名に変更する理由

このデータセットを別の変数のコピーとして、またはサブセットとして別の小さなデータに使用するか、同じ大きなデータセットからのデータと列名を使用して異なる種類のデータ変換を実行すると、列名のすべての特殊文字が変更されます.

カラム名に特殊文字を保存する方法はありますか?私はRが列名に関して何かを変更することを望まない。

解決策をご提案ください。

> library(MASS) 
> data(cats) 
> cats <- cats[1:10,] 
> cats 
    Sex Bwt Hwt 
1 F 2.0 7.0 
2 F 2.0 7.4 
3 F 2.0 9.5 
4 F 2.1 7.2 
5 F 2.1 7.3 
6 F 2.1 7.6 
7 F 2.1 8.1 
8 F 2.1 8.2 
9 F 2.1 8.3 
10 F 2.1 8.5 
> colnames(cats) <- c("A:17272,,1,MPR.rtn_rslt", "B:17272,,1,MPR.rtn_rslt", "C:17272,,1,MPR.rtn_rslt") 
> cats 
    A:17272,,1,MPR.rtn_rslt B:17272,,1,MPR.rtn_rslt C:17272,,1,MPR.rtn_rslt 
1      F      2.0      7.0 
2      F      2.0      7.4 
3      F      2.0      9.5 
4      F      2.1      7.2 
5      F      2.1      7.3 
6      F      2.1      7.6 
7      F      2.1      8.1 
8      F      2.1      8.2 
9      F      2.1      8.3 
10      F      2.1      8.5 

catsデータセットは、特殊文字,:とカラム名を持っています。以下、私はデータ変換を行っています。変換の上

> # Define the avector-subselection method 
> as.data.frame.avector <- as.data.frame.vector 
> `[.avector` <- function(x,i,...) { 
+ r <- NextMethod("[") 
+ mostattributes(r) <- attributes(x) 
+ r 
+ } 

> # Preserve attributes as they are lost due to subet 
> test <- data.frame(
+ lapply(cats, function(x) { 
+  structure(x, class = c("avector", class(x))) 
+ }) 
+) 

> test 
    A.17272..1.MPR.rtn_rslt B.17272..1.MPR.rtn_rslt C.17272..1.MPR.rtn_rslt 
1      F      2.0      7.0 
2      F      2.0      7.4 
3      F      2.0      9.5 
4      F      2.1      7.2 
5      F      2.1      7.3 
6      F      2.1      7.6 
7      F      2.1      8.1 
8      F      2.1      8.2 
9      F      2.1      8.3 
10      F      2.1      8.5 

は、新しいデータtestcatsから来る.から:,のように、すべての特殊文字を変更することにつながります。

答えて

2

試してみてください。

test <- data.frame(lapply(cats, function(x) { 
     structure(x, class = c("avector", class(x))) 
}), check.names = FALSE) 

あなたが形式で引用符やいくつかのケースではバックティックを使って名前を参照する必要がありますが、それは全体のデータフレームの名前を変更することが好ましいかもしれません。

関連する問題