У меня есть фрейм данных, и все столбцы классифицируются как символы. Каждый столбец содержит дробь. Я хочу преобразовать столбцы в целые числа, но некоторые столбцы имеют дробь "0/0", что, похоже, не нравится R. Я попробовал следующее, но получил
df2 <- as.numeric(df)
и получил следующее
Error: (list) object cannot be coerced to type 'double'
Мне не удалось найти сообщение, объясняющее, как преобразовать символ, содержащий дробь "0/0 "к числовому значению 0. Я понимаю, что есть причина, по которой R доставляет мне проблемы со всем делением на ноль. Я просто имею дело с генетическими данными, и гораздо проще преобразовать данные в числовые и сложить все, чем выполнять какую-то функцию замены. Фактический фрейм данных - это десятки миллионов строк и более 500 строк.
Вот пример фрейма данных
df <- structure(list(`GEN[5].GT` = c("0/1", "0/0", "0/0", "0/0",
"0/1", "0/0", "0/0", "1/1", "0/0", "0/0"), `GEN[1].GT` = c("0/0",
"0/0", "0/0", "0/0", "0/0", "0/0", "0/0", "0/0", "0/0", "0/0"
), `GEN[6].GT` = c("1/1", "0/0", "0/0", "0/0", "0/0", "0/0",
"0/1", "0/0", "0/0", "0/0"), `GEN[9].GT` = c("0/0", "0/0",
"0/0", "0/0", "0/1", "0/0", "0/0", "0/1", "0/0", "0/0"), `GEN[89].GT` = c("0/0",
"0/0", "0/0", "0/0", "0/0", "0/0", "0/0", "0/0", "0/0", "0/0"
), `GEN[453].GT` = c("0/0", "0/0", "0/1", "0/0", "0/0", "0/0",
"0/0", "0/0", "0/0", "0/0"), `GEN[554].GT` = c("0/0", "0/0",
"0/0", "0/0", "0/0", "0/0", "1/1", "0/0", "0/0", "0/0"), `GEN[9864].GT` = c("0/0",
"0/0", "0/0", "0/0", "0/0", "0/0", "0/0", "0/0", "0/0", "0/0"
), `GEN[1234].GT` = c("1/1", "0/0", "0/0", "0/0", "0/0", "0/0",
"0/0", "0/0", "0/0", "0/0"), `GEN[3333].GT` = c("0/0", "0/0",
"0/0", "0/0", "0/0", "1/1", "0/0", "0/1", "0/0", "0/0")), row.names = c(NA,
10L), class = "data.frame")
# Expected output
df2 <- structure(list(`GEN[5].GT` = c("0.5", "0", "0", "0",
"0.5", "0", "0", "1", "0", "0"), `GEN[1].GT` = c("0",
"0", "0", "0", "0", "0", "0", "0", "0", "0"
), `GEN[6].GT` = c("1", "0", "0", "0", "0", "0",
"0.5", "0", "0", "0"), `GEN[9].GT` = c("0", "0",
"0", "0", "0.5", "0", "0", "0.5", "0", "0"), `GEN[89].GT` = c("0",
"0", "0", "0", "0", "0", "0", "0", "0", "0"
), `GEN[453].GT` = c("0", "0", "0.5", "0", "0", "0",
"0", "0", "0", "0"), `GEN[554].GT` = c("0", "0",
"0", "0", "0", "0", "1", "0", "0", "0"), `GEN[9864].GT` = c("0",
"0", "0", "0", "0", "0", "0", "0", "0", "0"
), `GEN[1234].GT` = c("1", "0", "0", "0", "0", "0",
"0", "0", "0", "0"), `GEN[3333].GT` = c("0", "0",
"0", "0", "0", "1", "0", "0.5", "0", "0")), row.names = c(NA,
10L), class = "data.frame")