2012-12-29 1 views
9

내가 달성하고자하는 것은 모든 인쇄 된 숫자를 최대 7 자릿수로 표시하는 것입니다. 여기에 내가 원하는 걸의 예는 인쇄 :많은 수의 제로 인쇄 중지 (과학적 표기법이 아님)

0.000000 (0.299180291884922입니다 실제 수 ..... 대)

0.299180 (0.000000000029481입니다 실제 수 ..... 대)

나는 options(scipen=99999)options(digits=6)을 사용하여 후자 유형의 숫자로 성공했습니다. 그러나 앞의 예제는 항상 5 개의 0이 아닌 숫자가 뒤 따르는 많은 수의 0을 인쇄합니다. 이 작업을 중지하고 원하는 결과를 얻으려면? 나는 또한 과학 표기법을 원하지 않는다..

모든 컨텍스트에서 모든 인쇄 된 숫자에 적용하고 싶습니다. 예를 들어, 어떤 행렬을 가지고 있는데, A이라면,이 행렬을 출력합니다. 모든 요소가 6-7 자리가되도록하고 싶습니다. 모든 상황에서 모든 인쇄물에 대해 자동으로이 기능을 사용하고 싶습니다. options(digits=6)options(scipen=99999)을 사용하는 것과 같이 모든 컨텍스트에 자동으로 적용됩니다.

+0

숫자가 큰 경우 (예 : 123456789.87654321) 과학적 표기법을 사용하지 않을 경우 어떻게 최대 7 자리 숫자를 사용하여 인쇄 할 수 있습니까?! – flodel

+0

@flodel 좋은 지적. 아마 나는 과학적 표기법 (또는 6 자리 이상으로 확장)을 사용하기 위해이 매우 큰 숫자를 원할 것입니다. 그러나 모든 멍청이를 잘라내는 해법이 존재한다면 6-7 자리까지만 할 수 있습니다. R 콘솔에서 인쇄해야하는 큰 숫자로 작업하지 않기 때문에 괜찮습니다. – Jase

답변

3

모든 숫자는 <입니까? 간단한 sprintf("%.6f", x)을 시도해 볼 수 있습니다. 그렇지 않으면 자릿수를 기준으로 sprintf에 줄 바꿈을 시도 할 수 있습니다. 기타 세부 사항은 ?sprintf을 확인하십시오.

+0

모든 단일 번호 인쇄에이 기능이 자동으로 적용되기를 원합니다. 모든 문맥의 모든 객체에 적용된다는 점에서'options (digits = 6) '과 비슷한 해결책이며, 한번만 설정하면됩니다. 모든 것이 <1이 아니지만 대화식으로 인쇄해야하는 모든 것은 * <100입니다. – Jase

10

인쇄하려는 유형에 대해 새 인쇄 방법을 정의 할 수 있습니다. 모든 숫자가 두 배로이 경우 이중 (또는 복식의 벡터)를 인쇄 할 때 예를 들어, 당신이 지금

print.double=function(x){sprintf("%.6f", x)} 

를 만들 수 있습니다, 기능 print.double() 대신 print.default()의 호출됩니다.

인쇄해야하는 유형에 따라 print.integer(), print.complex() 등의 유사한 기능을 만들어야 할 수도 있습니다.

기본 인쇄 방법으로 돌아가려면 print.double() 기능을 삭제하기 만하면됩니다.