Как создать пустой вектор R для добавления новых элементов - PullRequest
83 голосов
/ 05 августа 2010

Я хочу использовать R в Python, как предусмотрено модулем Rpy2.Я заметил, что R имеет очень удобные [] операции, с помощью которых вы можете извлечь определенные столбцы или строки.Как я мог достичь такой функции скриптами Python?

Моя идея состоит в том, чтобы создать вектор R и добавить эти нужные элементы в этот вектор так, чтобы конечный вектор был таким же, как в R. Я создал seq(), но, похоже, у него есть начальная цифра 1, поэтому конечный результат всегда будет начинаться с цифры 1, а это не то, что я хочу.Итак, есть ли лучший способ сделать это?

Ответы [ 7 ]

90 голосов
/ 05 августа 2010
vec <- vector()

См. Также справку по вектору

?vector
48 голосов
/ 05 августа 2010

Я предварительно выделяю вектор с

> (a <- rep(NA, 10))
 [1] NA NA NA NA NA NA NA NA NA NA

Затем вы можете использовать [] для вставки значений в него.

22 голосов
/ 05 августа 2010

Вы можете создать пустой вектор следующим образом:

vec <- numeric(0)

И затем добавить элементы, используя c ()

vec <- c(vec, 1:5)

Однако, как говорит Ромунов, гораздо лучше предварительно выделитьvector, а затем заполните его (поскольку это позволяет избежать перераспределения новой копии вашего вектора при каждом добавлении элементов)

4 голосов
/ 05 августа 2010

Я тоже видел

x <- {}

Теперь вы можете объединить или связать вектор любого измерения с x

rbind(x, 1:10)
cbind(x, 1:10)
c(x, 10)
3 голосов
/ 20 декабря 2013

Чтобы создать пустой вектор, используйте:

vec <- c();

Обратите внимание, я не делаю никаких предположений относительно типа требуемого вектора, например числового.

После того, как вектор былСоздано, вы можете добавить элементы к нему следующим образом:

Например, чтобы добавить числовое значение 1:

vec <- c(vec, 1);

или, чтобы добавить строковое значение "a"

vec <- c(vec, "a");
2 голосов
/ 24 ноября 2013

Как указывает Брани, vector () является решением, например,

newVector <- vector(mode = "numeric", length = 50)

вернет вектор с именем "newVector" с 50 "0" в качестве начальных значений. Также довольно просто добавить новый скаляр к существующему вектору, чтобы получить расширенный вектор, например

aVector <- c(aVector, newScalar)

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

В rpy2 способ получить тот же оператор, что и "[" с R, - использовать ".rx". См. Документацию о извлечении с помощью rpy2

Для создания векторов, если вы знакомы с Python, проблем не должно быть. См. Документацию о создании векторов

...