присваивать значения пустой строке в R - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть функция, которая возвращает фрейм данных с более чем 50 столбцами (одна строка). Эта функция вызывается внутри цикла (lapply), поэтому я получаю список информационных фреймов по одной строке в каждом.

Я инициализирую пустой фрейм данных в самом начале функции, которая будет заполнена фактическими данными, возвращаемыми процессом (короткая версия здесь для тестирования)

      df <- read.csv(text = "conn,pc,server,profile")

R> df
[1] conn    pc      server  profile car     id      amount 
<0 rows> (or 0-length row.names)

Я хотел бы присвоить значения строке, учитывая, что процесс иногда не возвращает значения для всех столбцов.

Подобные вопросы SO имеют тенденцию полагаться на инициализацию фрейма данных следующим образом:

df <- data.frame("conn"= NA, "pc"= NA, "server"= NA, "profile" = NA)

но мне не нужна строка NA, если значение не возвращено.

Итак, в своей функции я сначала попробовал:

returned.conn.value <- 3  # assigned by hand for the sake of simplicity

df$conn <- returned.conn.value
    Error in `$<-.data.frame`(`*tmp*`, conn, value = 3) : 
      replacement has 1 row, data has 0

Итак, я обнаружил, что нет способа добавить значение в столбец внутри пустого фрейма данных, но .....

df[1,1] <- 3

Это, к моему удивлению, сработало. Но я считаю очень уродливым присваивать значения столбцам по индексу, поэтому я попробовал это:

grep("^conn$", colnames(df))
[1] 1

Действительно более уродливо, так как заставляет меня писать одну и ту же строку для каждого столбца (вместо подсчета вручную, да)

Итак, боюсь, я выбрал мертвую дорогу, ведущую в никуда.

есть ли способ инициализировать пустой фрейм данных, поскольку это позволит мне выполнять простые задания, как показано ниже, без проблем?

df$conn <- 3

Любая подсказка будет высоко оценена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...