Я импортировал фрейм данных из CSV-файлаR: Заменить значение в кадре данных as.numeric
dat3 <- read.csv(file.choose(),as.is = TRUE)
содержит имена и значения. Моя проблема в том, что когда я пытаюсь заменить значение в кадре данных, например.
dat3[3,6]<-12
тогда он просто предполагает, что "12"
представляет собой текстовую строку, а не значение, тем самым предотвращая меня от использования этого числа для математических операций. Я хотел бы иметь возможность заменить некоторые числа в кадре данных и использовать их для математических операций.
Когда я пытаюсь добавить 1
в dat3[3,6]
, я получаю: «Ошибка в dat3 [3, 6] + 1: нечисловой аргумент для двоичного оператора».
Я пробовал:
lapply(dat3[3,6], as.numeric)
dat3[3,6]<-as.numeric(12)
Но это не работает. У меня, однако, нет проблем с использованием уже импортированных чисел в фрейме данных. Это происходит только для чисел, которые я заменяю.
Что такое исходный класс dat3, я думаю, что это уже символ, матрица - это структура атомных данных в R – sinalpha
Вот почему мы храним данные в 'data.frame' (или еще лучше, IMHO, в' data .table'), который позволяет использовать несколько типов данных (по одному на столбец). Матрица может иметь только один тип, поэтому, если столбец _any_ является символом, весь набор будет преобразован. В основе лежит тип «list», который позволяет хранить несколько типов («data.frame» - это особый тип 'list'). Сравните 'cbind (matrix (1: 2, nrow = 2), matrix (c (" a "," b "), nrow = 2))' и 'list (first = 1: 2, second = c (" a "," b "))' – MichaelChirico
Итак, как бы вы импортировали его вместо DataFrame? –