我仍然在努力寻找R范围和环境.我希望能够构造简单的辅助函数,这些函数可以从我的'main'函数中调用,这些函数可以直接引用这些主函数中的所有变量 - 但是我不想在每个main函数中定义辅助函数功能.
helpFunction<-function(){
#can I add a line here to alter the environment of this helper function to that of the calling function?
return(importantVar1+1)
}
mainFunction<-function(importantVar1){
return(helpFunction())
}
mainFunction(importantVar1=3) #so this should output 4
Run Code Online (Sandbox Code Playgroud) 我正在开发一个包,需要另一个包 OpenMx 的命名空间。该包只能从它自己的存储库中获得,但在Additional_repositories 字段中指定该存储库不起作用。当尝试在未安装 OpenMx 的情况下构建我的包时,我得到:
\n\n错误:依赖项“OpenMx”不可用于等等
\n\n是我的描述有问题,还是我需要做其他事情?
\n\n我的描述文件的相关部分:
\n\nDepends: R (>= 3.0.0)\nImports: MASS, OpenMx (>= 2.0)\nAdditional_repositories: http://openmx.psyc.virginia.edu/OpenMx2/\nLazyData: Yes\nVignetteBuilder: knitr\nSuggests: knitr\nRun Code Online (Sandbox Code Playgroud)\n\n来自构建尝试的日志:
\n\nThu Apr 2 18:08:10 2015: Building tarball for package ctsem (SVN revision 5)\nusing R version 3.1.3 Patched (2015-03-16 r67994) ...\n\n* checking for file \xe2\x80\x98ctsem/DESCRIPTION\xe2\x80\x99 ... OK\n* preparing \xe2\x80\x98ctsem\xe2\x80\x99:\n* checking DESCRIPTION meta-information ... OK\n* installing the package to build vignettes\n -----------------------------------\n* installing *source* package \xe2\x80\x98ctsem\xe2\x80\x99 ...\n** R\n** data\n*** moving datasets to lazyload DB\n** …Run Code Online (Sandbox Code Playgroud) 我想为各种线条绘制阴影置信区域,但是希望这些区域中的alpha级别从b到c逐渐变化,其中b是中位数的alpha,而c是我正在使用的任何外部分位数的alpha .以下代码生成我想要的线和置信区域图,但没有变量透明度.
x= 1:10+rnorm(10)
xhigh=x+rnorm(10)^2
xlow=x-rnorm(10)^2
plot(x,type='l')
polygon(x=c(1:length(xlow),length(xlow):1), y=c(xhigh,xlow[length(xlow):1]),col = rgb(1,0,0,.1),border=NA)
Run Code Online (Sandbox Code Playgroud) 基于这个问题和解决方案——在 Eigen3 中实现 Bartels-Stewart 算法?-- 我正在尝试使用 Eigen 库求解 Lyapunov 方程 (AX + XA^T = C),但仅限于实矩阵。
下面的 R(使用 c++)代码有效,但涉及复数。它绝对可以简化(因为在这个框架中,没有 B 矩阵),但主要的困难是对复数的依赖。在这种情况下,真正的舒尔形式似乎是标准的替代方案,但是特征函数 matrix_function_solve_triangular_sylvester 不起作用,因为输入矩阵不是上三角,而是上块三角。我很乐意看到以下建议:a) 消除对复数的需求,然后如果可能的话,b) 任何效率改进。
library(expm)
library(Rcpp)
library(RcppEigen)
library(inline)
# R -----------------------------------------------------------------------
d<-6 #dimensions
A<-matrix(rnorm(d^2),d,d) #continuous time transition
G <- matrix(rnorm(d^2),d,d)
C<-G %*% t(G) #continuous time pos def error
AHATCH<-A %x% diag(d) + diag(d) %x% A
Xtrue<-matrix(-solve(AHATCH,c(C)), d) #asymptotic error from continuous time
# c++ in R ---------------------------------------------------------------------
sylcpp <- '
using Eigen::Map;
using Eigen::MatrixXd;
// Map the double …Run Code Online (Sandbox Code Playgroud) 我想允许我的函数的用户使用任意列名,并且我需要在 data.table 中引用这些列名。从 var 获取列名是有效的,除非 var 的名称也是 dt 的列。我想要一个解决方案来修改我的参考方法(即get(id)),以便它在变量和列名称重叠的情况下以及它们不重叠的情况下工作 - 使用 data.table v1.14.0 当列与变量(包含所需的列引用)同名,该列优先,这会破坏get(id).
dt=data.table(id='id1')
id='id'
dt[get(id) %in% 'id1',] #fails
dt=data.table(subject='id1')
id='subject'
dt[get(id) %in% 'id1',] #works
Run Code Online (Sandbox Code Playgroud)
有很多与通过变量引用列名相关的问题,但我找不到避免这种极端情况的解决方案,即用户碰巧使用与我的引用变量相同的列名。