論理の流刑地

地獄の底を、爆笑しながら闊歩する

data frameをはてな記法での表組に変える関数

ただのTechnical Notes。
いちいちスクショなり表を整形するなりまでする必要ないけど、ブログに表をのせたいとき使う
データフレームを引数にとって、ただ実行するだけであとは「貼り付け」するだけではてな記法での表組に変換できる関数をつくる

◆参考URL

関数の実装

以下のようなコードをかけばよい。Mac OSだとwrite.tableの引数fileの部分が変わってくるので、注意。

library(dplyr)
#dta: データフレーム(tableでも可)
#header: ヘッダを出力するかどうか
# digits: 小数点以下何位まで出力するか
toHatenaTbl <- function(dta , header=T, digits=0){
dta <- as.data.frame( dta)
if( header){
colnames(dta )  <- paste0("*" , colnames(dta))
colnames(dta)[1] <- paste0( "|" ,colnames(dta)[1])
colnames(dta)[ncol(dta)] <- paste0( colnames(dta)[ncol(dta)], "|" )
} #if header

num_dgt <- function(x, dgt=3){
if( class(x) %in% c( "integer" , "double" , "numeric")){
x <- round( x, dgt)
} #if num_dgt
return(x)
} #func num_dgt

dta <- dplyr::mutate_all( dta , .funs=~num_dgt(. , dgt = digits))
dta[,1] <- paste0( "|" , dta[,1] )
dta[, ncol(dta)] <- paste0( dta[, ncol(dta)] , "|")
write.table( dta , file="clipboard-16333" , sep="|" , fileEncoding="CP932" , col.names = header,row.names=F  , quote=F ) 
}# func toHatenaTbl

実行

#適当なdata frame生成
df1 <- data.frame( V1 = rnorm(10), V2  = runif(10), V3= LETTERS[ceiling(round(runif(10)*24,0))])

head( df1,3)
# V1        V2 V3
# 1 -0.9469035 0.7316705  S
# 2 -1.2841297 0.8209863  T
# 3 -0.9822657 0.5953788  G

#つくった関数を実行
toHatenaTbl( df1, digits=3)

結果

上のコードでクリップボードはてな記法での表組が記憶されているはずなので、それをCtrl+Vで張り付けるだけ。

V1 V2 V3
-0.947 0.732 S
-1.284 0.821 T
-0.982 0.595 G
-0.319 0.57 L
-0.021 0.274 T
-2.653 0.905 C
-0.217 0.426 W
1.44 0.821 R
-0.233 0.663 B
-0.357 0.625 U

しっかりと整形できている。


Mr.Children 「エソラ」 MUSIC VIDEO


Enjoy!!!