Problem executing function
Comments inline below.
On 12/10/2011 7:47 AM, Divyam wrote:
sorry correction in the first and result hence received code:
ok. I tested it in two ways. I want to externalise my odbcConnection details
dsn, uid, and pwd. Hence I created a csv file to have these information.
Like I showed in the sample function initially, the order of the steps were
1) loading of the packages,
2) fetching the csv file,
3)assigning the dsn, uid, and pwd separately to values,
4) establish the connection by using these values .
The sample function I created thus was:
fun<- function ()
{
# Package load into R;
a<- c(library("RODBC"),library("e1071"));
b<- read.csv("path of the csv file", header=TRUE, sep=",",
quote="");
c<- b[,1];
d<- b[,2];
e<- b[,3];
# Establishing ODBC connection;
connection<- odbcConnect(c, uid=d, pwd=e);
X<-list(a=a, b=b, c=c,d=d, e=e, connection=connection);
return(X);
}
# function call
fun()
This creates the 6 objects a,b,c,d,e and connection, and stores them in the list. Then R prints the list, but you didn't save it anywhere
$a [1] "RODBC" "class" "stats" "graphics" "grDevices" "utils" [7] "datasets" "methods" "base" "e1071" "RODBC" "class" [13] "stats" "graphics" "grDevices" "utils" "datasets" "methods" [19] "base" "e1071" "RODBC" "class" "stats" [25] "graphics" "grDevices" "utils" "datasets" "methods" "base" $b DSN uid pwd 1 x xy abcdef $c [1] x Levels: x $d [1] xy Levels: xy $e [1] abcdef Levels: abcdef $connection RODBC Connection 1 Details: case=nochange DSN=x Description=test UID=xy PWD=****** APP=RStudio Warning messages: 1: package 'RODBC' was built under R version 2.13.1 2: package 'e1071' was built under R version 2.13.1 3: package 'dummies' was built under R version 2.13.2 To see if the objects were created, I typed
> b
Error: object 'b' not found
You need to study "scoping" in R. The variable named "b" was local to your function call. You copied it's value into X, and returned that, but the variable b does not live beyond the function call. If you had done value <- fun() then you could retrieve the copy as value$b Duncan Murdoch
connection
Error: object 'connection' not found However, when I simply give the code for fetch directly on the command prompt, it works.
b<- read.csv("path of the csv file", header=TRUE, sep=",",
quote="");
object b gets created under data. I checked the path of the file and its name. They are correct. So I thought I'll directly give the dsn, uid, and pwd information in odbcConnection instead of externalizing it to see how the function responds. This is what I did:
fun<- function()
{
a<- c(library("RODBC"),library("e1071"));
connection<- odbcConnect("x",uid="xy",pwd="abcdef");
X<-list(b=b,connection=connection);
return(X);
}
# function call and result
fun ()
$a [1] "e1071" "RODBC" "class" "stats" "graphics" [7] "grDevices" "utils" "datasets" "methods" "base" [13] "e1071" "RODBC" "class" "stats" "graphics" "grDevices" [19] "utils" "datasets" "methods" "base" "e1071" [25] "RODBC" "class" "stats" "graphics" "grDevices" "utils" [31] "datasets" "methods" "base" $connection RODBC Connection 4 Details: case=nochange DSN=x Description=test UID=xy PWD=****** APP=RStudio when I try to see the connection object by typing in the command prompt it throws an error saying the object is not found:
connection
Error: object 'connection' not found This is what I meant by the function being created, printed but object not created. I should also mention that these steps run perfectly fine when not assigned to a function (both the methods). So i guess the code is ok. I am missing something but am not able to figure that out. By the looks of it I think I have assigned the values to be returned to some object. Any thoughts? Thanks Divya -- View this message in context: http://r.789695.n4.nabble.com/Problem-executing-function-tp3894359p3897696.html Sent from the R help mailing list archive at Nabble.com.
______________________________________________ R-help at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.