gpt4 book ai didi

r - R中的基本日历显示

转载 作者:行者123 更新时间:2023-12-04 03:33:54 24 4
gpt4 key购买 nike

R是否有基本的日历显示,例如Unix的cal程序?

我意识到包装基本日期/时间函数(如weekdaysseq.date等)并不难,但是我觉得我不了解一些非常基本的东西,可以通过其中一种出色的时间/日期包来解决。已经存在。而且,它总是足够简单地开始:分配一周中的几天,然后又可以跨越几年,跨越多个月的日历布局(尽管我只打算打印1个月),依此类推。

我目前的用法涉及将R切换到Linux或Windows中的日历程序。在R中执行此操作会更容易。

注意1.我已经研究了一些可用于Gtk2和TclTk的小部件-由于某种原因,支持系统的安装效果不佳(我认为这是严重的过大杀伤力,从便携性的角度来看也不是很好。有这种依赖性)。在Windows中,我什至尝试了Cygwin来访问cal,但是该安装似乎与Rtools冲突。简而言之,添加 Material 层目前并不是特别有效的途径。 :)我在lubridate,xts,zoo和其他程序包中找不到任何解决方案,尽管我可能错过了一些东西。

最佳答案

这是将执行基本年度或每月日历的功能:

cal <- function(month, year) {

if(!require(chron)) stop('Unable to load chron package')

if(missing(year) && missing(month)) {
tmp <- month.day.year(Sys.Date())
year <- tmp$year
month <- tmp$month
}


if(missing(year) || missing(month)){ # year calendar
if(missing(year)) year <- month
par(mfrow=c(4,3))
tmp <- seq.dates( from=julian(1,1,year), to=julian(12,31,year) )
tmp2 <- month.day.year(tmp)
wd <- do.call(day.of.week, tmp2)
par(mar=c(1.5,1.5,2.5,1.5))
for(i in 1:12){
w <- tmp2$month == i
cs <- cumsum(wd[w]==0)
if(cs[1] > 0) cs <- cs - 1
nr <- max( cs ) + 1
plot.new()
plot.window( xlim=c(0,6), ylim=c(0,nr+1) )
text( wd[w], nr - cs -0.5 , tmp2$day[w] )
title( main=month.name[i] )
text( 0:6, nr+0.5, c('S','M','T','W','T','F','S') )
}

} else { # month calendar

ld <- seq.dates( from=julian(month,1,year), length=2, by='months')[2]-1
days <- seq.dates( from=julian(month,1,year), to=ld)
tmp <- month.day.year(days)
wd <- do.call(day.of.week, tmp)
cs <- cumsum(wd == 0)
if(cs[1] > 0) cs <- cs - 1
nr <- max(cs) + 1
par(oma=c(0.1,0.1,4.6,0.1))
par(mfrow=c(nr,7))
par(mar=c(0,0,0,0))
for(i in seq_len(wd[1])){
plot.new()
#box()
}
day.name <- c('Sun','Mon','Tues','Wed','Thur','Fri','Sat')
for(i in tmp$day){
plot.new()
box()
text(0,1, i, adj=c(0,1))
if(i < 8) mtext( day.name[wd[i]+1], line=0.5,
at=grconvertX(0.5,to='ndc'), outer=TRUE )
}
mtext(month.name[month], line=2.5, at=0.5, cex=1.75, outer=TRUE)
#box('inner') #optional
}
}

您可以编辑各种片段以对其进行自定义。您可以使用 par(mfg=c(r,c))将文本,图表或其他信息添加到月度日历中的给定单元格(有关添加图表的可能帮助,请参阅 updateusr包中的 subplotTeachingDemos)。

以下是在日历中添加文本或图表的一些示例:
cal(10,2011)
par(mfg=c(3,2)) # monday oct 10
text(.5,.5, 'Some\nText', cex=2)

par(mfg=c(2,3)) #Tues oct 4
text(1,1, 'Top Right', adj=c(1,1))

par(mfg=c(2,4)) # Wed oct 5
text(0,0, 'Bottom Left', adj=c(0,0))

par(mfg=c(6,2)) # oct 31
tmp.x <- runif(25)
tmp.y <- rnorm(25,tmp.x,.1)
par(usr=c( range(tmp.x), range(tmp.y) ) )
points(tmp.x,tmp.y)

关于r - R中的基本日历显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7919998/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com