在R函数中返回多个对象

如何返回R函数中的多个对象? 在Java中,我会创build一个类,也许Person有一些私有variables和封装,也许, heightage等。

但是在R中,我需要传递数据组。 例如,我如何使一个R函数返回一个字符列表和一个整数?

与许多其他语言不同,R函数并不严格意义上返回多个对象。 处理这个最常用的方法是返回一个list对象。 所以,如果你的函数中有一个整数foo和一个stringbar ,你可以创build一个列表来组合这些条目:

 foo <- 12 bar <- c("a", "b", "e") newList <- list("integer" = foo, "names" = bar) 

然后return这个列表。

在调用你的函数之后,你可以使用newList$integernewList$names访问每一个函数。

其他对象types可能更好地用于各种目的,但list对象是一个很好的开始。

同样在Java中,您可以在R中创build一个封装您的信息的S4类:

 setClass(Class="Person", representation( height="numeric", age="numeric" ) ) 

那么你的函数可以返回这个类的一个实例:

 myFunction = function(age=28, height=176){ return(new("Person", age=age, height=height)) } 

你可以访问你的信息:

 aPerson = myFunction() aPerson@age aPerson@height 

你正在寻找什么?

 x1 = function(x){ mu = mean(x) l1 = list(s1=table(x),std=sd(x)) return(list(l1,mu)) } library(Ecdat) data(Fair) x1(Fair$age) 

你也可以使用超级赋值。

而不是“< – ”键入“<< – ”。 该函数将recursion地重复search一个更高级别的对象的function级别。 如果找不到,就会在全球范围内创造一个。

你可以使用for()assign()来创build许多对象。 请参阅assign()的示例:

 for(i in 1:6) { #-- Create objects 'r.1', 'r.2', ... 'r.6' -- nam <- paste("r", i, sep = ".") assign(nam, 1:i) 

寻找新的对象

 ls(pattern = "^r..$") 

处理这种情况的一种方法是将信息作为主要信息的一个属性。 我必须强调,我真的认为只有当这两个信息是相关的,这样一个人就有另一个的信息时,这才是适当的。

例如,我有时候隐藏了“关键variables”或variables的名称,这些variables通过在数据框中存储variables名称列表作为一个属性进行了重大修改:

 attr(my.DF, 'Modified.Variables') <- DVs.For.Analysis$Names.of.Modified.Vars return(my.DF) 

这允许我用数据框本身存储variables名的列表。