2017-11-30 22 views
2

id 열이 1 행씩 올라가지 않는 행렬이 있다고 가정 해 보겠습니다.니트가 ## 및 행렬 인덱스/행 번호를 인쇄하지 못하게하는 방법은 무엇입니까?

m <- matrix(c(1, "a", "c", 
       5, "g", "c", 
       4, "b", "c", 
       9, "g", "a"), 
    ncol=3, byrow=TRUE) 
colnames(m) <- c("id", "class", "type") 

내가 rownames(m) <- NULL 또는 rownames(m) <- c()과 행 이름을 바꾸는 시도했다하지만 난 항상 매우 왼쪽에 행 번호가있는 출력으로 끝낼 :

 id class type 
[1,] "1" "a" "c" 
[2,] "5" "g" "c" 
[3,] "4" "b" "c" 
[4,] "9" "g" "a" 

이 더욱 더, 나는에 인쇄하는 경우 그냥 매트릭스에 입력 한 데이터가 PDF를 인쇄 할

##  id class type 
## [1,] "1" "a" "c" 
## [2,] "5" "g" "c" 
## [3,] "4" "b" "c" 
## [4,] "9" "g" "a" 

내가 좋아하는 것 : knitr에서 PDF, 나는 측면을 실행 ## 얻을

id class type 
"1" "a" "c" 
"5" "g" "c" 
"4" "b" "c" 
"9" "g" "a" 
+1

대신 데이터 프레임으로 전송하는 것으로 생각하십니까? –

+3

"##"는 모든 인쇄물에 적용되는'knitr'의'comment' 옵션에 의해 제어됩니다. https://yihui.name/knitr/options/#code-decoration을 참조하십시오. 출력을 적절하게 형식화 된 테이블로 변환하는'kable '과 같은 것을 사용하면이 문제를 해결할 수 있습니다. – Marius

답변

3

knitr 패키지의 kable을 사용할 수 있습니다.

m <- matrix(
    c(1, "a", "c", 5, "g", "c", 4, "b", "c", 9, "g", "a"), 
    ncol=3, 
    byrow=TRUE 
) 

colnames(m) <- c("id", "class", "type") 

knitr::kable(m) 

# |id |class |type | 
# |:--|:-----|:----| 
# |1 |a  |c | 
# |5 |g  |c | 
# |4 |b  |c | 
# |9 |g  |a | 

enter image description here

당신은 또한 당신에게 훌륭한 서식 옵션을 허용 할 우수한 kableExtra 패키지 here에 읽을 수 있습니다.

N.B. 나의 초기 답변에는 데이터 프레임으로의 캐스팅이 포함되어 있습니다.이 캐스팅은 테이블을 만들 때 평소의 워크 플로우로 남아 있습니다. 그러나 지적했듯이 kable은 행렬을 입력으로 기꺼이 받아들입니다.

+2

'knitr :: kable()'도 행렬에서 작동합니다. 맞습니까? – Suren

+0

감사합니다. 이것은 나에게 가장 좋은 옵션 인 것 같습니다. 그러나 일부 데이터 프레임을 출력하기 위해 forloops를 사용하고 있으며 많은 개체가 명시 적으로 print와 함께 호출되지 않는 한 인쇄되지 않습니다. knitr : kable()이 그 중 하나입니다. 내가 print라고 쓰면 모든 서식이 없어지니까. 이 문제를 해결하는 방법을 알고 있습니까? –

+1

@NicholasHassan, 그건 정말로 별개의 질문입니다. 그러나'results = 'asis''를 사용하는 것을 고려해 볼 수 있습니다. 또는'pander' 패키지가 특히 좋습니다. 그렇지 않으면 [here] (https://github.com/yihui/knitr/issues/886)에 명시된대로 'print'를 사용하는 것이 옳습니다. –