вывод данных из списка в одну строку в R

#r

#r

Вопрос:

У меня есть массив, подобный этому

 DATA01   Data03  Sam2
23.2     W.343    25
67.9     3.4      3.6
2.3
  

Необходимо преобразовать следующим образом

 DATA01     
23.2         
67.9           
2.3
Data03
W.343
3.4
Sam2
25
3.6
  

Я пробовал с t (транспонировать)

 t(paste(unlist(Data), collapse =" "))    
 
  

но это не решает проблему

Комментарии:

1. Можете ли вы однозначно указать данные с помощью dput(x) ? DATA01 Это заголовок столбца или это данные (а это матрица)?

2. Попробуйте другой t , как в t(t(unlist(Data)))

Ответ №1:

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

 data.frame(value = unlist(mapply(function(x, y) c(y,na.omit(x)), 
                          df, names(df))), row.names = NULL)
  

Или с помощью purrr :

 library(purrr)

imap(df, ~c(.y, na.omit(.x))) %>% flatten_chr() %>% data.frame(value = .)

#    value
#1  DATA01
#2    23.2
#3    67.9
#4     2.3
#5  Data03
#6   W.343
#7     3.4
#8    Sam2
#9      25
#10    3.6
  

данные

Предполагая, что это ваши данные :

 df <- structure(list(DATA01 = c(23.2, 67.9, 2.3), Data03 = c("W.343", 
"3.4", NA), Sam2 = c("25", "3.6", NA)), row.names = c(NA, -3L
), class = "data.frame")
df

#  DATA01 Data03 Sam2
#1   23.2  W.343   25
#2   67.9    3.4  3.6
#3    2.3   <NA> <NA>
  

Комментарии:

1. Ваша идея приводит меня к data.frame(value = na.omit(unlist(rbind(names(df),df)))) , или as.vector(na.omit(unlist(rbind(names(df),df)))) если вертикальное расположение не важно.