特定于平台的图形设备

Dan*_*Dan 2 r

我想编写一个函数,它接受一个文件名并在*nix平台上生成一个.pdf文件,在Windows平台上生成一个.wmf,文件名和宽度为6英寸4.

graph <- function(filename){
setwd("graphics")
ext <- ifelse(.Platform$OS.type == "unix", "pdf", "wmf")
name <- paste(filename, ext, sep=".")
ifelse(.Platform$OS.type == "unix", pdf(name, width=6, height=4), wmf(name, width=6, height=4))
}
Run Code Online (Sandbox Code Playgroud)

这是我的尝试,但我收到了这个错误

ans [test&!nas]中的错误< - rep(yes,length.out = length(ans))[test&:replacement的长度为零

有任何想法吗?我觉得我忽视了什么.

had*_*ley 5

这是一个更精致的功能版本.改进:

  • 不会弄乱你的工作目录
  • 通过从扩展中查找设备功能来避免重复的if语句

- >

graph <- function(filename) {
  ext <- if(.Platform$OS.type == "unix") "pdf" else "wmf"
  dev <- match.fun(ext)
  path <- paste("graphics/", filename, ".", ext, sep = "")

  dev(path, width = 6, height = 4)
}
Run Code Online (Sandbox Code Playgroud)