Можно ли сохранить вектор внутри ячейки данных? - PullRequest
0 голосов
/ 16 января 2019

Я пытаюсь создать фрейм данных, который содержит идентификатор и числовой вектор с неизвестным количеством оценок в строке, но я не знаю, как это сделать.

studentmean <-
    data.frame(
      Student = character(),
      Grades = c(0),
      stringsAsFactors = FALSE
    )

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

gradeList <- getGradesOfStudent(data$ResultFrame, matriculationNumber)$Grades
    studentmean[nrow(studentmean) + 1, ] = list(as.character(matriculationNumber), gradeList

Как можно сохранить вектор числовых значений в одной ячейке данных?

Ответы [ 2 ]

0 голосов
/ 16 января 2019

Я согласен с комментарием Стивена Хендерсона о том, что вы не должны использовать списочные столбцы, если вы не абсолютно уверены, что они являются лучшим способом решения вашей конкретной проблемы. При этом, если вы решите использовать столбцы списка, вы можете рассмотреть возможность использования столбцов вместо фреймов данных. Tibbles - это «обновление» обычных фреймов данных. Они являются частью Tidyverse и поставляются в пакете tibble.

Тиблы облегчают создание столбцов списка:

tibble(x = 1:3, y = list(1:5, 1:10, 1:20))

#> # A tibble: 3 x 2
#>       x y         
#>   <int> <list>    
#> 1     1 <int [5]> 
#> 2     2 <int [10]>
#> 3     3 <int [20]>

Кроме того, вы можете "упаковать" и "распаковать" списки-столбцы, используя команды nest и unnest из пакета tidyr. Например:

df <- tibble(
  x = 1:3,
  y = c("a", "d,e,f", "g,h")
)
df %>%
  transform(y = strsplit(y, ",")) %>%
  unnest(y)

Для получения дополнительной информации о тибле вы можете обратиться к этой виньетка .

0 голосов
/ 16 января 2019

Да, конечно :) A data.frame - это list, и поэтому вы можете вкладывать в него разностные структуры данных:

df <- data.frame(a = c(1,2,3), b = c("a", "b", "c"))
df$c <- list(c(1, 2, 3), c(4,5,6), c(7,8,9))

> str(df)
'data.frame':   3 obs. of  3 variables:
 $ a: num  1 2 3
 $ b: Factor w/ 3 levels "a","b","c": 1 2 3
 $ c:List of 3
  ..$ : num  1 2 3
  ..$ : num  4 5 6
  ..$ : num  7 8 9
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...