私はread_excel
を使用して、Excelファイルをインポートするのにスピードとシンプルさを実現しています。名前のついた列をすべて削除する
残念ながら、データセットから不要な選択した列を除外する機能はまだありません。努力を惜しまないためににcol_names
という引数を付けて、x1
、x2
などを追跡するよりも簡単です。
私はそのように擬似コードでは、可能な場合はコピーの余分なステップを回避するために、その場でこのような列を除外したいと思います:
read_excel("data.xlsx", col_names = c("x", "keep", "x"))[ , !"x"]
我々はreadxl
パッケージに含まれているサンプルデータセットを使用することができますイラスト:
library(readxl)
DF <- read_excel(system.file("extdata/datasets.xlsx", package = "readxl"),
col_names = c("x", "x", "length", "width", "x"), skip = 1L)
私はその仕事を見てきたアプローチはまさにその場で動作しない、例えば、DF
を格納した、私たちが今できること:
DF <- DF[ , -grep("^x$", names(DF))]
これは動作しますが、保存することによってDF
のコピーを作成してから上書きする必要があります。私は ab initioを正しく割り当てるために、read_excel
と同じコマンドで列を削除したいと考えています。
他の同様のアプローチは、私は可能であれば避けることを好む宣言一時変数を、必要、例えば、
col_names <- c("x", "x", "length", "width", "x")
DF <- read_excel(system.file("extdata/datasets.xlsx", package = "readxl"),
col_names = col_names, skip = 1L)[ , -grep("^x$", col_names)]
は、不要な一時変数を作成することなく、これらの列をAXにそこの方法ですか?
(私はdata.table
に変換することができますが、data.table
ずにそうする方法があるかどう疑問に思って)
あなたは 'dplyr'を使用していますか?明示的に変数を作成せずに 'select()'にパイプすることができます。 (もちろん、名前の有無にかかわらず、完全なdata.frameは存在します。)唯一の問題が余分な変数であれば、独自の関数 'dropXcolumns()'などを作成してください。 – MrFlick
「保存してDFのコピーを作成する必要があります」:コピーを1ライナーにしてもコピーが作成されると思いますので、あなたの問題は問題ありません。コピーを避ける唯一の方法は 'read_excel'が明示的にそれを許可している場合です(' data.table :: fread'の 'select'引数に似ています)。 – nicola
'XLConnnect :: readWorksheet'(より良い文書がありますが、おそらく' readWorksheetFromFile'が必要です)には、列の 'keep'と' drop'パラメータがあります。Javaベースのため、インストールは通常よりも少し複雑です。 – alistaire