Добавить столбец во фрейм данных как список фреймов данных - PullRequest
1 голос
/ 06 августа 2020

Просто интересно, как я могу добавить новый столбец к существующему фрейму данных, который является списком фреймов данных. Например, если у меня есть такой фрейм данных: -

x <- data.frame("SN" = 1:2, "Age" = c(21,15), "Name" =
c("John","Dora"))

Мне нужно добавить к нему новый столбец, скажем, «тест» - что я могу понять с помощью

x$test <- 1

Но это добавляет новый столбец как столбец numeri c.

Мне нужен этот столбец, чтобы элемент в каждой строке этого столбца в этом фрейме данных был списком, скажем, из трех (3) фреймов данных. Каждый из этих трех фреймов данных в строке будет содержать разное количество строк и столбцов. Подобные фреймы данных в других строках будут содержать такое же количество столбцов, но может иметь другое количество строк.

Вот так: -

x$test[1] <- list(df1_1, df1_2, df1_3)
x$test[2] <- list(df2_1, df2_2, df2_3)

где df1_1, df1_2, df1_3 - независимые фреймы данных с разным количеством столбцов и строк в строке 1 и df2_1, df2_2, df2_3_3 - это независимые фреймы данных с разным количеством столбцов и строк в строке 2.

Количество столбцов и тип данных этих столбцов в df1_1 и df2_1 одинаковы. Аналогично, количество столбцов и тип данных этих столбцов df1_2 и df2_2 одинаковы и т. Д.

Есть ли способ сделать это?

Генерация фреймов данных df1_1, df1_2, df1_3 выполняются через al oop.

Любые указатели / предложения будут высоко оценены.

С уважением

Deepak Agarwal

1 Ответ

1 голос
/ 06 августа 2020

Мы могли бы получить наборы данных в list с помощью mget

# // initialize a list column
x$test <- vector('list', nrow(x))
# // loop over the sequence of rows of dataset
for(i in seq_len(nrow(x))) {
     # // create string with index
     str1 <- paste0('df', i, '_', 1:3)
     # // get the value of the objects from string with mget
     tmplist <- mget(str1)
     # // assign it to the corresponding list element of test
     x$test[[i]] <- tmplist
  }             
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...