Hi all.
I'm having a little trouble with the function "texteval" (session
package).
I have used "texteval" in the construction of the function
"ExpandData1".
"ExpandData1" does not work as expected. However, when I run only the
inside code
of "ExpandData1" I get the right result. Apparently
"texteval" is not working when
used called by another function. Here is a simple
example:> library(session)
> library(compositions)
The following object(s) are masked from 'package:robustbase':
> ExpandData1 <- function(Data,linkFunctionsVector,numPar)
+ {
+ attach(as.data.frame(Data))
+ EvalData = array(0, c(nrow(Data),length(linkFunctionsVector) ) )
+ for(idexpr in 1: length(linkFunctionsVector)) {
+ if(linkFunctionsVector[idexpr] == "1"){ EvalData[,idexpr] =
rep(1,nrow(Data))}
+ else{ texteval(paste("EvalData[,idexpr] =",
linkFunctionsVector[idexpr]), echo = TRUE)}
+ }
+
+ ExpData = NULL
+ for(idpar in 1: numPar){
+ ExpData = cbind(ExpData, EvalData)
+ }
+ colnames(ExpData) = rep(linkFunctionsVector,numPar)
+ return(ExpData)
+ }>
> # defining the parameters "Data",
"linkFunctionsVector", and "numPar"
>
> numPar = 2
> linkFunctionsVector = c("1", "depth",
"depth^2")
> data(ArcticLake)
>
> A = ArcticLake[1:5,]
> Data = array(A[,4],c(5,1))
> colnames(Data) = c("depth")
>
> # calling the function
>
> ExpandData1(Data,linkFunctionsVector,numPar)
The following object(s) are masked from 'as.data.frame(Data) (position
11)':
depth
1 depth depth^2 1 depth depth^2
[1,] 1 0 0 1 0 0
[2,] 1 0 0 1 0 0
[3,] 1 0 0 1 0 0
[4,] 1 0 0 1 0 0
[5,] 1 0 0 1 0 0>
> # however, running only the inside code
>
> attach(as.data.frame(Data))
> EvalData = array(0, c(nrow(Data),length(linkFunctionsVector) ) )
> for(idexpr in 1: length(linkFunctionsVector)) {
+ if(linkFunctionsVector[idexpr] == "1"){ EvalData[,idexpr] =
rep(1,nrow(Data))}
+ else{ texteval(paste("EvalData[,idexpr] =",
linkFunctionsVector[idexpr]), echo = TRUE)}
+ }>
> ExpData = NULL
> for(idpar in 1: numPar){
+ ExpData = cbind(ExpData, EvalData)
+ }> colnames(ExpData) = rep(linkFunctionsVector,numPar)
>
> # I get the right result
>
> ExpData
1 depth depth^2 1 depth depth^2
[1,] 1 10.4 108.16 1 10.4 108.16
[2,] 1 11.7 136.89 1 11.7 136.89
[3,] 1 12.8 163.84 1 12.8 163.84
[4,] 1 13.0 169.00 1 13.0 169.00
[5,] 1 15.7 246.49 1 15.7 246.49>
I have no idea why this is happening. Any idea?
[[alternative HTML version deleted]]