2011-08-23 3 views
9

나는 이것을 묻는 바보 같지만 여기에 간다. 숫자 목록이 있지만 날짜와 결합하고 싶습니다. 예를 들어반복되는 값을 열에 넣기

는 :

list1 <- c(1, 2, 3, 4, 5) 
list2 <-c("2009-01-01") 
list3 <-cbind(list2, list1) 

나는 거기에 데이터 포인트이며, 다음 데이터 포인트와 함께 같은 날짜가 동일한 횟수를 나열합니다.

date    number 
"2009-01-01"   1 
"2009-01-01"   2 
"2009-01-01"   3 
"2009-01-01"   4 
"2009-01-01"   5 

위의 코드를 실행하려고하면 길이가 일치하지 않는다는 메시지가 나타납니다. 모든 제안을 부탁드립니다. 감사.

+1

이해가 안; 그것은 나를 위해 작동합니다 .... (cbind가 생성하는) 행렬이 아닌 data.frame을 시도 할 수 있습니다. 또한,'list's "list"가 아닌 것을 호출하는 것을 피하십시오. 목록이 R 데이터 유형이므로 혼란스러워집니다. –

답변

9

편집하여 내 데이터 프레임 주석을보다 잘 설명합니다.

rep 어때요?

list1 <- 1:5 
list2 <- rep("2009-01-01",length(list1)) 
list3 <- cbind(list2, list1) 

R의 재활용 규칙에 관계없이 원하는 출력이 제공되어야합니다. 또한, 당신은 당신이 데이터 프레임을하지 않을 수 있습니다 귀하의 경우

list3 <- data.frame(date = list2, number = list1) 

cbind 이후 의지 매트릭스는 하나의 형식이어야하기 때문에, 문자 매트릭스를 생산하고 있습니다.

2

다른 답변이 "완벽한"것이라고 생각하는 데 불구하고 게시하는 이유는 cbind이 '문자'인 하나의 벡터를 갖고 있기 때문에 전적으로 '문자'유형이라는 매트릭스를 반환한다는 것입니다.

> str(list3) 
chr [1:5, 1:2] "2009-01-01" "2009-01-01" "2009-01-01" ... 
- attr(*, "dimnames")=List of 2 
    ..$ : NULL 
    ..$ : chr [1:2] "list2" "list1 

data.frame을 사용하려면 혼합 유형 (날짜 및 숫자)의 데이터로 작업하는 것이 좋습니다. 인수 중 하나가 dataframe 경우

> data.frame(dt = as.Date("2009-01-01"), l1 = list1) 
      dt l1 
1 2009-01-01 1 
2 2009-01-01 2 
3 2009-01-01 3 
4 2009-01-01 4 
5 2009-01-01 5 
+0

좋은 지적. 나는 r에 대한 경험이 있고 나는 다양한 데이터 유형 처리를 기억하기 위해 여전히 고심하고있다. 알림 주셔서 감사. – acesnap

1

cbind가 dataframe를 반환합니다 : 그것은 당신도 자동적으로 반복됩니다 인수 재활용()가 대표를 사용할 필요가 없습니다 추가 기능이 있습니다. 이 경우, 이는 단지 data.frame [?cbind 참조]에 대한 래퍼 역할을합니다.

사용자가 cbind이 작동하고 매트릭스를 만들었다 고 말한 다른 답변과 의견에서 매트릭스는 문자 매트릭스 였고 숫자는 문자열로 합쳐졌습니다. 아마 그걸 원하지 않았을거야. 아직 발표되지

하나의 솔루션으로,이 작업을 수행하는 것입니다 : 첫 번째 인수가 dataframe 때문에

vector1 <- c(1, 2, 3, 4, 5); 
vector2 <- c("2009-01-01"); 
cbind(data.frame(date = vector2), number = vector1); 

이것은 dataframe을 만듭니다.

는하지만, 내가 최선을 생각하고, 사람이 정말 당신이 당신이 원하는 것은 바로 data.frame를 호출하는 것입니다 알고 보여줍니다 :

data.frame(date = vector2, number = vector1); 
관련 문제