2017-02-07 19 views
-1

R version 3.2.1OS X Yosemite (Version 10.10.4)で作業しています。R:未使用の引数(.SDcols = variable)でcsvをフィルタリングする

使用してCSVファイルを読む:次に

> train = read.csv("~/Downloads/train.csv", header = TRUE) 

変数初期化:

> cat_var <- names(train)[which(sapply(train, is.character))] 
> cat_var <- c(cat_var, 'BedroomAbvGr', 'HalfBath', ' KitchenAbvGr','BsmtFullBath', 'BsmtHalfBath', 'MSSubClass') 

今、私はcat_var列の合計はnull値を見つけたいが、次のエラーを取得:

> colSums(sapply(train[,.SD, .SDcols=cat_var], is.na)) 
Error in `[.data.frame`(train, , .SD, .SDcols = cat_var) : 
    unused argument (.SDcols = cat_var) 

答えて

2

NULL値を見つけるには(と仮定します))である場合、data.tableアプローチは、最初に 'data.frame'をdata.tableに変換することです。これはOPのコードからsetDT

library(data.table) 
setDT(train) 

で行うことができ、data.tableへの変換が起こったかどうかは明らかではありません。例えば

mtcars1 <- copy(mtcars) 
mtcars1[, lapply(.SD, sum), .SDcols = 1:2] 

Error in [.data.frame (mtcars1, , lapply(.SD, sum), .SDcols = 1:2) :
unused argument (.SDcols = 1:2)

は、それが特定の問題についてdata.frame、しかし

setDT(mtcars1)[, lapply(.SD, sum), .SDcols = 1:2] 
#  mpg cyl 
#1: 642.9 198 

あるので、我々は直接data.table

freadを使用してファイルを読み取ることができ、エラーを返します
train <- fread("~/Downloads/train.csv") 
cat_var <- names(train)[unlist(lapply(train, is.character))] 

と私はdata.table対data.frameの私のミスを理解

train[, lapply(SD, function(x) sum(is.na(x))), .SDcols = cat_var] 
+0

sumis.naを使用して.SDcolsで言及した列のNA要素の数を見つけます。しかし、data.tableを使用すると、次のエラーが発生します。 '.SDcolsのいくつかの項目は列名ではない(またはNAである)' – nish

+0

@nish 'cat_var'の要素をチェックして、その列名が 'train'に含まれているか、列車内に異常な列名があるかどうかを確認してください..私が示したコードはうまくいくはずです。私は '1.10.0'バージョン – akrun

関連する問題