質問
私は私のデータではR.でcolClasses
機能でread.csv
オプションを指定しようとしていますが、最初の列「時間」は、基本的に文字ベクトルである。
data <- read.csv("test.csv", comment.char="" ,
colClasses=c(time="character", "numeric"),
strip.white=FALSE)
上記のコマンドでは、私は、Rは、「文字」や数値などの他の部分と「時間」の欄に読みたいと思います。 、「データ」変数は、コマンドが完了した後、正しい結果を持っていたものの、Rは、次の警告を返しました。私はこれらの警告を修正することができるか疑問に思って?
Warning messages:
1: In read.table(file = file, header = header, sep = sep, quote = quote, :
not all columns named in 'colClasses' exist
2: In tmp[i[i > 0L]] <- colClasses :
number of items to replace is not a multiple of replacement length
デレク
解決
はcolClassesベクトルの長さを有していなければならないインポートされた列の数に等しいです。仮にの休息のデータセットの列の5のとおりです:
colClasses=c("character",rep("numeric",5))
他のヒント
あなただけ1列に対してcolClasseを指定することができます。
あなたの例では、あなたが使用する必要がありますのでます:
data <- read.csv('test.csv', colClasses=c("time"="character"))
あなたの「時間」の列と仮定すると、数字以外の文字を有する少なくとも一つの観察を持っており、他のすべての列が数字だけを持って、そしてファクター 『とすべて『と』時間「read.csvのデフォルトを読み込むことであろう』 「数値」として残りの列。従って設定「stringsAsFactorsを= F」は、手動すなわち「colClasses」を設定した場合と同じ結果になります。
data <- read.csv('test.csv', stringsAsFactors=F)
あなたはむしろ列番号よりもヘッダから名前を参照したい場合、あなたはこのようなものを使用することができます:
fname <- "test.csv"
headset <- read.csv(fname, header = TRUE, nrows = 10)
classes <- sapply(headset, class)
classes[names(classes) %in% c("time")] <- "character"
dataset <- read.csv(fname, header = TRUE, colClasses = classes)
、および列の多くは、自分の日時フィールドが列36と38であり、そして、私は彼らが、文字フィールドとしてで読みたいとします:
data<-read.csv("test.csv", head=FALSE, colClasses=c("V36"="character","V38"="character"))
私はOPがutils::read.csv
機能について尋ね知っているが、私はここに来て、これらのための答えを提供してみましょうはtidyverseからreadr::read_csv
を使用してそれを行う方法を探しています。
read_csv ("test.csv", col_names=FALSE, col_types = cols (.default = "c", time = "i"))
の時間は整数として解析されるでしょうが。 これは、の文字のようにすべての列のデフォルトのタイプを設定する必要があります
私たちは@Hendyと@Oddysseusイサカは貢献どのような組み合わせならば、我々はクリーナーを取得し(すなわち、適応?)より一般的なコードの塊ます。
data <- read.csv("test.csv", head = F, colClasses = c(V36 = "character", V38 = "character"))