前几天看见有个老外用R来显示LED数字,感觉很好玩,于是想既然可以显示数字,那么也可以显示时间,于是产生了下列代码:
</p>
<p>LED = function(x) {<br />
x = sprintf("%06d",x)<br />
line = rep(1:3,times = 11)<br />
index = rep(0:10,each = 3)<br />
map = c(" _ ","| | ","|_| "," "," | "," | "," _ "," _| ","|_ ",<br />
" _ "," _| "," _| "," ","|_| "," | "," _ ","|_ "," _| ",<br />
" _ ","|_ ","|_| "," _ "," | "," | "," _ ","|_| ","|_| ",<br />
" _ ","|_| "," _| "," "," : "," ")</p>
<p> Lines = cbind(line,index,map)<br />
DF = data.frame(Lines,stringsAsFactors=F)<br />
digit = strsplit(x,"")<br />
nummap = lapply(1:nchar(x),function(i) DF[DF$index == as.numeric(digit[[1]][i]),])</p>
<p> Times = as.data.frame(sapply(1:nchar(x),function(i) paste(nummap[[i]]$map)))<br />
Times$V7 = DF[DF$index == 10,]$map<br />
Times$V8 = DF[DF$index == 10,]$map<br />
Times = Times[,c(1,2,7,3,4,8,5,6)]<br />
return(Times)<br />
}<br />
现在的问题是能否将数据框的行名和列名给隐藏起来,这样看起来舒服些。
[data]
> LED(081023)
V1 V2 V7 V3 V4 V8 V5 V6
1 _ _ _ _ _
2 | | |_| : | | | : _| _|
3 |_| |_| | |_| |_ _|
> LED(182159)
V1 V2 V7 V3 V4 V8 V5 V6
1 _ _ _ _
2 | |_| : _| | : |_ |_|
3 | |_| |_ | _| _|
[/data]
</p>