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)