Как мне преобразовать массив в широкий фрейм данных в R?

Допустим, у меня есть массив

arr = as.array(c(1.1,0.5,3.2,4.3,5.5,6.3,0.4))

Я хочу преобразовать это в фрейм данных, поэтому я пытаюсь:

df = as.data.frame(arr)

Но это дает мне фрейм данных с nrows = 7 и ncols = 1. Мне нужен фрейм данных с nrows = 1 и ncols = 7. Я попытался сделать t(df) но это вернуло бы матрицу.

Я знаю, что должен быть простой способ сделать это... спасибо!

2 ответа

Решение

Как насчет:

arr = array(c(1.1,0.5,3.2,4.3,5.5,6.3,0.4), dim = c(1, 7))
as.data.frame(arr)

#   V1  V2  V3  V4  V5  V6  V7
#1 1.1 0.5 3.2 4.3 5.5 6.3 0.4

Обратите внимание, использовать array или же matrixне as.array или же as.matrix,


alistaire упомянул хороший способ

as.data.frame(t(c(1.1,0.5,3.2,4.3,5.5,6.3,0.4)))

#   V1  V2  V3  V4  V5  V6  V7
#1 1.1 0.5 3.2 4.3 5.5 6.3 0.4

который превратит dim для вас автоматически.

Если нам нужен набор данных из 7 столбцов, мы можем использовать as.data.frame.list на vector

as.data.frame.list(c(1.1,0.5,3.2,4.3,5.5,6.3,0.4))

Как упомянуто @ZheyuanLi, вышеприведенное добавит "X" в качестве префикса для имен столбцов. Мы можем изменить имена столбцов в col.names аргумент

as.data.frame.list(c(1.1,0.5,3.2,4.3,5.5,6.3,0.4), col.names = paste0("V", 1:7))

Или другой вариант будет иметь имена для vector элементы

as.data.frame.list(setNames(c(1.1,0.5,3.2,4.3,5.5,6.3,0.4), paste0("V", 1:7)))
Другие вопросы по тегам