R: data.frame не принимает ввод строки и меняет мои переменные на значения N / A - PullRequest
1 голос
/ 27 мая 2020

Новое в R. Я пытаюсь прочитать имена файлов excel и заполнить data.frame:

Допустим, я уже прочитал имя файла

counter <- 1 #simplifying as this would be a for loop that would start with a counter at 1
file_name <- "excel file name"
 extension <- "xlsx"
 status <-"successful"

Я инициализирую data.frame и маркирую столбцы

global_file_list <- data.frame(File.Name = as.character(),
                                Extension = as.character(),
                                Status = as.character())

Когда я пытаюсь заполнить эту первую строку, я получаю следующие предупреждения, и data.frame заполняется N / A:

global_file_list[counter,] <- data.frame(cbind(file_name, extension, status))

Warning messages:
1: In [<-.factor(*tmp*, iseq, value = c(file_name = 1L)) :<br>
invalid factor level, NA generated
2: In [<-.factor(*tmp*, iseq, value = c(file_ext = 1L)) :<br>
invalid factor level, NA generated
3: In [<-.factor(*tmp*, iseq, value = c(status = 1L)) :<br>
invalid factor level, NA generated

Однако, если бы я сделал следующее, без использования счетчика, первая строка заполняется:

global_file_list <- data.frame(cbind(file_name, extension, status))

Затем это продолжает работать, но все равно заполняется N / A values ​​

counter <- counter + 1
 global_file_list[counter,] <- data.frame(cbind(file_name, extension, status))
  1. По какой причине фрейм данных не принимает первую запись со счетчиком?
  2. Почему вместо значений моих переменных отображается «Н / Д»?

Спасибо за помощь!

1 Ответ

0 голосов
/ 28 мая 2020

Ваш global_file_list был создан с использованием факторов вместо векторов символов. Вы можете использовать strengAsFactors = FALSE

global_file_list <- data.frame(File.Name = as.character(),
                               Extension = as.character(),
                               Status = as.character(), stringsAsFactors = FALSE)


global_file_list[counter,] <- cbind(file_name, extension, status)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...