使用 F# Rprovider 访问用户创建的 R 对象
Access user-created R objects using the F# Rprovider
我无法引用我在 F# 中使用 R.
符号在 R 端创建的 functions/data.frames/variables。这是如何实现的?
例如,在下面的代码中,我希望能够通过 intellisense 引用 symbols
和 f1
。
open RProvider
open RDotNet
R.eval(R.parse(text="
require(datasets);
volcanoList <- unlist(as.list(volcano));
volcanoMean <- mean(volcanoList);
symbols <- c('volcano', 'volcanoList', 'volcanoMean');
f1 <- function(y) y+1
dfs <- data.frame(a = symbols)
"))
R.eval(R.parse(text="symbols"))
R.symbols // doesn't work
R.f1 // doesn't work
R.dfs // doesn't work
R 类型提供程序目前不扫描环境中用户创建的变量(一个问题是它们在您 运行 代码之前并不真正存在,因此您会在文件,如果你刚刚打开它)。
最接近这种情况的可能是使用 RData type。这使您可以以静态类型的方式读取 RData 文件。因此,如果您在 R 代码末尾调用 save
:
R.eval(R.parse(text="""
require(datasets);
volcanoList <- unlist(as.list(volcano));
volcanoMean <- mean(volcanoList);
symbols <- c('volcano', 'volcanoList', 'volcanoMean');
save(list=symbols, file="C:/temp/image.rdata")
"""))
然后您可以阅读保存的文件并提供良好的自动完成支持(我不确定您是否需要在保存文件时明确指定符号列表,或者您是否可以只保存整个环境):
let data = new RData<"C:/temp/image.rdata">()
data.volcano
data.volcanoList
data.volcanoMean
我无法引用我在 F# 中使用 R.
符号在 R 端创建的 functions/data.frames/variables。这是如何实现的?
例如,在下面的代码中,我希望能够通过 intellisense 引用 symbols
和 f1
。
open RProvider
open RDotNet
R.eval(R.parse(text="
require(datasets);
volcanoList <- unlist(as.list(volcano));
volcanoMean <- mean(volcanoList);
symbols <- c('volcano', 'volcanoList', 'volcanoMean');
f1 <- function(y) y+1
dfs <- data.frame(a = symbols)
"))
R.eval(R.parse(text="symbols"))
R.symbols // doesn't work
R.f1 // doesn't work
R.dfs // doesn't work
R 类型提供程序目前不扫描环境中用户创建的变量(一个问题是它们在您 运行 代码之前并不真正存在,因此您会在文件,如果你刚刚打开它)。
最接近这种情况的可能是使用 RData type。这使您可以以静态类型的方式读取 RData 文件。因此,如果您在 R 代码末尾调用 save
:
R.eval(R.parse(text="""
require(datasets);
volcanoList <- unlist(as.list(volcano));
volcanoMean <- mean(volcanoList);
symbols <- c('volcano', 'volcanoList', 'volcanoMean');
save(list=symbols, file="C:/temp/image.rdata")
"""))
然后您可以阅读保存的文件并提供良好的自动完成支持(我不确定您是否需要在保存文件时明确指定符号列表,或者您是否可以只保存整个环境):
let data = new RData<"C:/temp/image.rdata">()
data.volcano
data.volcanoList
data.volcanoMean