10

列名にスペースと特殊文字が含まれる csv ファイルがあります。

freadそれらを引用符でインポートします-しかし、どうすればこの動作を変更できますか? 理由の 1 つは、スペースで始まる列名があり、それらの処理方法がわからないことです。

どんなポインタも役に立ちます。

編集:例。

> packageVersion("data.table")
[1] ‘1.8.8’

p2p <- fread("p2p.csv", header = TRUE, stringsAsFactors=FALSE)

> head(p2p[,list(Principal remaining)])
Error: unexpected symbol in "head(p2p[,list(Principal remaining"

> head(p2p[,list("Principal remaining")])
                    V1
1: Principal remaining

> head(p2p[,list(c("Principal remaining"))])
                    V1
1: Principal remaining

私が期待していた/望んでいたのは、もちろん、スペースのない列名がもたらすものです:

> head(p2p[,list(Principal)])
   Principal
1:      1000
2:      1000
3:      1000
4:      2000
5:      1000
6:      4130
4

3 に答える 3

10

setnames 関数が <- 記号で使用されていないため、少し変更されたBondedDustバージョン:

setnames(DT, make.names(colnames(DT))
于 2014-07-08T14:44:08.087 に答える
6

列名の先頭にスペースを入れるのはかなり難しいはずです。「カジュアルコーディング」では起こらないはずです。一方で、コード内のエラー チェックはあまり見られないfreadため、この望ましくない動作が修正されるまで (または機能要求が拒否されるまで)、次のようなことができます。

setnames(DT, make.names(colnames(DT))) 

一方colnames(DT)、列名が引用符付きで表示されるという事実に悩まされている場合は、「それを乗り越えてください」。これが、インタラクティブ コンソールが任意の文字値を表示する方法です。

元のように見える文字列にデータ項目がある" ttt"場合、インポートすると先頭にスペースがあり、さまざまなパッケージcolnames(dfrm) <- sub("^\\s+", "", colnames(dfrm))のいくつかのtrim関数 (「gdata」など) のいずれかで処理する必要があります。

于 2013-06-06T18:02:30.483 に答える