代码之家  ›  专栏  ›  技术社区  ›  Dan

平台专用图形设备

r
  •  2
  • Dan  · 技术社区  · 16 年前

    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))
    }
    

    替换长度为零

    2 回复  |  直到 16 年前
        1
  •  5
  •   Collin    16 年前

    • 通过从扩展中查找设备函数来避免重复的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)
    }
    
        2
  •  2
  •   Vince    16 年前

    我认为问题在于ifelse返回一个值, 伊夫斯!=简写,如果 ,ifelse=矢量化if。从帮助页面:

    'ifelse'返回一个具有相同值的值

    if (.Platform$OS.type == "unix") {
      pdf(name, width=6, height=4) 
    } else {
      wmf(name, width=6, height=4)
    }