0%

Use R in Spotfire

上篇 Spotfire ironpython示例小结 主要整理了关于Spotfire中关于如何使用Ironpython来拓展Spotfire使用范围,即通过脚本来控制分析及展示的过程

这篇文章主要整理下关于Spotfire中TERR脚本使用注意事项,TERR是一个集成在Spotfire中的一个R版本,代码的函数以及R包的用法大部分都跟Open R(常见的R版本)一样,唯一需要注意的是如何将其结果输出到Spotfire的一些文档属性或者可视化图形中

TERR的使用相比Ironpython简单不少,后者的难度主要在于需要熟悉Ironpython的Spotfire包对应的各个API的调用方式,而前者跟R基本类似,因此上手会相对容易点;因此以下给出两个例子,关于Spotfire中TERR的代码模板:

  • 调用R版本
  • 用TERR创建图片
  • 用TERR输出统计结果或者计算值

Choose certain R version

这个在当电脑中有多个R版本的时候比较好用

pushPATH("C:\\Users\\anlan\\AppData\\Local\\R-3.6.1\\bin")

Create images by TERR in Spotfire

先加载RinR包(必要的),然后通过RGraph将绘图输出赋值为变量,RGraph有几个参数:

  • packages,将所用到的包都写入向量中

  • data,引入需要用到的数据集

  • display,在代码调试时是否要做展示

    library(RinR) lung <- input

    graph <- RGraph({ fit <- survfit(Surv(time, status) ~ sex, data = lung) res.sum <- surv_summary(fit, data = lung) p <- ggsurvplot(fit, pval = TRUE, conf.int = TRUE, risk.table = TRUE, # Add risk table risk.table.col = "strata", # Change risk table color by groups linetype = "strata", # Change line type by groups surv.median.line = "hv", # Specify median survival ggtheme = theme_bw(), # Change ggplot2 theme palette = c("#E7B800", "#2E9FDF") ) print(p)

    },packages = c("survminer","survival","ggplot2"),data = "lung",display=TRUE)

Spotfire images displayed in table cell

用法与上述类似,区别在于这种方法可以将图嵌入到表格的每个Cell中,展示形式的不同

library(RinR)

tempfilename <- tempfile()
col1 <- 1:10
col2 <- 11:20

graph <- RGraph({
    png(file = tempfilename, bg = "transparent")
    plot(col1, col2)
    dev.off()
},data=list(col1=col1, col2=col2, tempfilename=tempfilename),display=FALSE)

# Read the resulting png into binaryValue
readHandle <- file(tempfilename,'rb')
binaryValue <- readBin(con=readHandle,what=raw(),n=1000000000)
close(readHandle)

unlink(tempfilename)

# Generate an output data table, with 1 row, 1 column, with a blob value.
x <- data.frame(col1=c(rep(NA,2)), col2=1:2)
x[[1]][1:2] <- list(binaryValue,binaryValue)
p <- "image/*"
names(p) <- "ContentType"
attr(x[[1]], "SpotfireColumnMetaData") <- as.list(p)

Output calculated value

这里并不是为了输出图片了,而是某个计算值,然后输出到Spotfire某个document property

version <- REvaluate({version$version.string}, REvaluator)

package <- REvaluate({
    library(survminer)
    paste(rownames(installed.packages()), collapse = ",")
}, REvaluator)

n_col <- REvaluate({
    ncol(data)
}, REvaluator,data="data")

参考资料

https://gist.github.com/datalove/65619f5111712a2820c0
Creating a simple chart in R and show it in Spotfire
Calling RGraph to create an image file using the TERR RinR package

本文出自于http://www.bioinfo-scrounger.com转载请注明出处