2015-10-29 1 views
8

Я хочу превратить data.table строк в векторы. Вот то, что сработало для меня:Преобразование строки таблицы данных в вектор

unlist(dt[row_num]) 

Но есть ли более естественное решение? Я также не нравится, что выше сохраняет имя, когда на самом деле я хочу чисто числовой вектор вместо, который затем приводит к:

as.numeric(unlist(dt[row_num])) 

Похоже, там должно быть лучшим вариантом.

+6

что * это * родное решение для преобразования 'list' в' vector' в R; также обратите внимание на аргумент 'use.names'' unlist' – eddi

+0

Вы также можете удалить имена с 'igname'. –

+3

Я согласен с первым предложением BondedDust здесь: http://stackoverflow.com/a/8595099/1191259 «Технически списки * являются * векторами, хотя очень немногие используют этот термин». В этом смысле вы можете остановиться на 'c (dt [row_num])' – Frank

ответ

8

Проблема с извлечением строк в качестве векторов заключается в том, что векторы являются однородными, а строки данных или таблиц данных - нет.

Однако, вы можете преобразовать данные в матрицу затем извлечь строку:

> x <- iris[1:10,1:4] 
> as.matrix(x)[1,] 
Sepal.Length Sepal.Width Petal.Length Petal.Width 
     5.1   3.5   1.4   0.2 
11

Хорошо, теперь я знаю, что вы хотите строку:

as.matrix(dt[row_num])[1,] 

ИМО это лучше использовать первый data.table -операция, а не конвертировать полный набор данных в матрицу. Просто производительность лучше (особенно на очень больших data.tables).

Смежные вопросы