새 항목을 추가하기 위해 빈 R 벡터를 만드는 방법


93

Rpy2 모듈에서 제공하는대로 Python에서 R을 사용하고 싶습니다. R에는 []특정 열이나 줄을 추출 할 수있는 매우 편리한 작업이 있습니다. 파이썬 스크립트로 어떻게 그러한 기능을 얻을 수 있습니까?

내 생각은 R 벡터를 만들고 원하는 요소를이 벡터에 추가하여 최종 벡터가 R의 것과 동일하도록하는 seq()것입니다.를 만들었지 만 초기 숫자 1이있는 것 같으므로 최종 결과는 항상 내가 원하는 것이 아닌 숫자 1로 시작하십시오. 그래서, 이것을하는 더 좋은 방법이 있습니까?

답변:



56

벡터를 미리 할당합니다.

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

그런 다음 []를 사용하여 값을 삽입 할 수 있습니다.


벡터의 길이를 처음부터 알고있는 경우 가장 좋은 답변입니다. 메모리 효율성이 가장
높기

25

이렇게 빈 벡터를 만들 수 있습니다.

vec <- numeric(0)

그런 다음 c ()를 사용하여 요소를 추가하십시오.

vec <- c(vec, 1:5)

그러나 romunov가 말했듯이 벡터를 미리 할당 한 다음 채우는 것이 훨씬 낫습니다 (요소를 추가 할 때마다 벡터의 새 복사본을 재 할당하는 것을 방지하기 때문입니다).


나는 numeric ()을 사용한 솔루션을 좋아하지만 내 경험으로 인해 0 대신 NA를 사용하게되었습니다 (number (2)를 사용하면 0 0을 얻습니다). 그러나 그것은 내 개인적인 취향입니다.
Roman Luštrik 2010 년

감사합니다 !! 그러나 하나의 새 요소를 추가 한 후 이전 요소를 해제 할 수 있습니까? rm ()을 사용해야합니까?
ligwin 2010-08-05

typeof (numeric (0))은 "double"을 제공하는 반면 원하는 요소는 "integer"를 제공하는 또 다른 문제가 있습니다. 추가하면 "새 값의 유형은 다를 수 없습니다"라는 오류가 발생합니다. 변환 방법은 무엇입니까?
ligwin 2010-08-05

파이썬에서 작업 할 때 "as"는 키워드이고, 또한 파이썬에는 그러한 데이터 유형이 없으므로 "as.integer"가 작동하지 않을 것이라고 생각합니까?
ligwin 2010-08-05

romunov-numeric (0)은 길이가 1 인 벡터가 아닌 길이가 0 (즉, 요소가 없음) 인 숫자 형 벡터를 생성한다는 의미입니다. 해당 요소가 0 인 경우
Aaron Statham

7

빈 벡터를 만들려면 다음을 사용하십시오.

vec <- c();

필요한 벡터 유형 (예 : 숫자)에 대해 어떤 가정도하지 않습니다.

벡터가 생성되면 다음과 같이 요소를 추가 할 수 있습니다.

예를 들어 숫자 값 1을 추가하려면

vec <- c(vec, 1);

또는 문자열 값 "a"를 추가하려면

vec <- c(vec, "a");

4
실제로 시도해 보셨습니까? vec <- c()vec를 NULL. 당신은 당신이 사용하는 것이 빈 벡터하려면 vec <- character(), vec <- numeric()
마태 현명한

5

나는 또한 보았다

x <- {}

이제 모든 차원의 벡터를 연결하거나 바인딩 할 수 있습니다. x

rbind(x, 1:10)
cbind(x, 1:10)
c(x, 10)

2
이것은와 정확히 동일하며 x <- NULLnowhere에 대한 참조 외에는 아무것도 생성하지 않습니다.
Joris Meys

3

Brani가 지적했듯이 vector ()는 솔루션입니다.

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

초기 값으로 50 개의 "0"이있는 "newVector"라는 벡터를 반환합니다. 확장 된 벡터에 도달하기 위해 기존 벡터에 새 스칼라를 추가하는 것도 매우 일반적입니다.

aVector <- c(aVector, newScalar)


2

rpy2에서 R과 함께 "["와 동일한 연산자를 얻는 방법은 ".rx"를 사용하는 것입니다. rpy2로 추출하는 방법 에 대한 문서를 참조하십시오.

벡터를 만들 때 Python을 사용하는 방법을 알고 있다면 문제가 없어야합니다. 벡터 생성에 대한 문서를 참조하십시오.


저는이 목적을 위해 파이썬으로 함수를 만들었습니다. 이것은 매우 복잡하고 얼마나 널리 적용될 수 있을지 모르겠습니다. 이제이 연산자를 사용하면 삶이 훨씬 더 쉬울 수 있다고 생각합니다.)
ligwin 2010-08-07
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.