を使用count.fields
して、データ内にいくつの列があるかを判断することから始めます。これは最初の行だけで実行できます。
次に、そこからrep
、colClasses
.
それは醜いですが、動作します。次に例を示します。
最初の数行は、再現可能な例を提供していないため、ワークスペースにダミーの csv ファイルを作成するだけです。
X <- tempfile()
cat("A,B,C,D,E,F",
"1,2,3,4,5,6",
"6,5,4,3,2,1", sep = "\n", file = X)
ここから本当の答えが始まります。以下の両方の場所で、「x」を実際のファイル名に置き換えます。これ-2
は、すでに考慮されている 2 つの列があるためです。
Y <- read.csv(X, colClasses = c(
"numeric", "numeric", rep("character", count.fields(textConnection(
readLines(X, n=1)), sep=",")-2)))
# Y <- read.csv("file.csv", colClasses = c(
# "numeric", "numeric", rep(
# "character", count.fields(readLines(
# "file.csv", n = 1), sep = ",")-2)))
str(Y)
# 'data.frame': 2 obs. of 6 variables:
# $ A: num 1 6
# $ B: num 2 5
# $ C: chr "3" "4"
# $ D: chr "4" "3"
# $ E: chr "5" "2"
# $ F: chr "6" "1"