myInput <- data.frame('X' = c(1, 2, 3, 4, 5),
'n' = c(87, 119, 94, 95, 134),
'r' = c(76, 8, 74, 11, 0))
write.csv(myInput, file = "test.csv", row.names = FALSE)
input_file <- "test.csv"
#Load input
myInput <- read.csv(input_file, stringsAsFactors = FALSE)
a_csv <- myInput[-3]
b_csv <- myInput[,-3]
Дает это:
> print(dim(a_csv))
[1] 5 2
> print(dim(b_csv))
[1] 5 2
По сравнению с этим результатом с fread()
:
myInput <- fread(input_file, stringsAsFactors = FALSE)
a_fread <- myInput[-3]
b_fread <- myInput[,-3]
> print(dim(a_fread))
[1] 4 3
> print(dim(b_fread))
[1] 5 2
Таким образом, чтение данных с использованием этих 2 методов возвращает объекты одного типа но индексирование по ним дает разные результаты. Почему? И как я могу сделать так, чтобы пользователи, которые решили использовать read.csv()
, не получали разные результаты от пользователей, которые выбирают fread()
?
PS. Это самое близкое, что я мог найти: чтение .csv и fread дают разные результаты для одного и того же фрейма данных
Но это связано с тем, как считываются данные. Я не смог найти ничего, что решило бы проблему индексации.