2012-04-10 2 views
0

나는이 벡터의 값을 그릴 때 눈에 보이는 각도 효과를 제거하기 위해 벡터의 요소 수를 늘리는 방법을 찾아 내려하고 있습니다.벡터의 해상도를 높이십시오.

a = c(4,2,10,5,3,4,8,9,6,2) 
b = seq(0,4.5, by=0.5) 

그들은 데이터 스무딩 될 수 있습니다,하지만 난 10 (길이)보다 더 많은 예측 점수를 획득하는 자신의 "해상도"증가하고 싶습니다 : 예를 들어, 내가 10 개 요소를 각각 포함하는 두 벡터를 가지고 가정 해 봅시다. 즉, 벡터 으로 가져 와서 일관성을 유지하면서 요소 수를 두 배로 늘립니다. 결과 벡터는 다음과 같아야합니다.

a = c(4,3,2,6,10,7,5,4,3,4,6,8,8.5,9,7.5,6,4,2,2) 

물론이 특별한 경우에는 쌍수로 요소의 평균을 쉽게 계산할 수 있습니다. 그러나 임의의 길이에 대한 일반화 된 방법을 원합니다. 나는 함께 시도 :

seq(a[1],a[10], length.out=20) 

하지만 벡터의 첫 번째와 마지막 요소가 고려에서 찍은으로 물론이 일을하지 않습니다. 두 번째 벡터 b (가로 좌표 값 포함)에 적합합니다. 도움이 될 것입니다. 감사. 마리우스.

+0

"일관성을 유지하는 것"이 ​​의미하는 바가 명확하지 않습니다. a의 최소값과 최대 값에 딱 맞습니까? – Hansi

+0

'splinefun' 또는'approxfun'을 좋아할 수도 있습니다 –

+0

아니요, 벡터 * a *의 두 연속 요소를 가져 와서 다른 2 또는 3 또는 임의의 요소가 고르게 분포되지만 그 요소의 추세를 존중하려면 벡터. 예를 들어 처음에는 a [5] = 4와 a [6] = 7과 a [7] = 5이고, [5]와 a [6] 사이와 [6] 7] 벡터의 조각은 a1 [5] = 4; 초기 a [5] = a1 인 경우 a1 [6] = 5, a1 [7] = 6, a1 [8] = 7, a1 [9] = 6.34, a1 [10] = 5.68, a1 [ @CarlWitthoft 또한 스플라인 함수를 만들었지 만 예상 값의 수를 늘려 결과 라인을 정의하고 싶습니다. [5], a [6] = a1 [8] 그리고 a [7] = a1 [11] – Marius

답변

2

b 시퀀스를 기반으로하는 선형 보간만을 원하십니까?

f <- approxfun(b, a) 
f(seq(b[1], b[length(b)], length = 20)) 
[1] 4.000000 3.052632 2.105263 5.368421 9.157895 8.157895 5.789474 4.368421 3.421053 3.263158 3.736842 4.842105 6.736842 8.157895 8.631579 8.684211 7.263158 5.789474 
[19] 3.894737 2.000000 

는 다양한 방법으로 값을 반올림도 ?round 보간의 다른 형태에 대한 다른 옵션에 대한 ?approx하고 See also를 참조하십시오.

+0

아니요, 이미 seq() 함수를 사용하여 선형 보간을 얻었지만 대부분의 데이터는 2 차 곡선을 설명하므로 벡터의 일관성을 유지하려고합니다. 그러나 나는 약과 둥근 것을 살펴볼 것이다. – Marius

+0

특히, 점의 수를 늘릴 때 - 특히 "일관성"이 무엇을 의미하는지 확신 할 수없는 경우, 기본 설정과 데이터를 정확히 일치 시키거나 스플라인을 일치시키는 것이 놀랄 것입니다. – mdsumner

+0

나는 approxfun이 거래를하는 것을 본다. 빠른 답장을 보내 주셔서 감사합니다. 나는 splinefun도 사용했지만, 스플라인 함수에 대한 커스텀 비헤이비어가 필요했기 때문에 이것이 내 자신을 만들었습니다. 다시 말하면 원하는 결과를 얻을 수 있습니다. 고맙습니다! – Marius

관련 문제