programing

R 함수에서 여러 개체 반환

javajsp 2023. 6. 28. 21:19

R 함수에서 여러 개체 반환

R 함수에서 여러 개체를 반환하려면 어떻게 해야 합니까?자바에서, 나는 클래스를 만들 것입니다, 아마도.Person개인적인 변수가 있고 캡슐화되어 있을 수도 있습니다.height,age,기타.

하지만 R에서는 데이터 그룹을 전달해야 합니다.예를 들어, R 함수가 문자 목록과 정수를 모두 반환하도록 하려면 어떻게 해야 합니까?

다른 많은 언어와 달리, R 함수는 엄격한 의미에서 여러 개체를 반환하지 않습니다.이를 처리하는 가장 일반적인 방법은 다음을 반환하는 것입니다.list물건.그래서 만약 당신이 정수를 가지고 있다면,foo그리고 현의 벡터.bar기능에서 다음 항목을 결합한 목록을 만들 수 있습니다.

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

그리고나서return이 명부

함수를 호출한 후 다음을 사용하여 각 항목에 액세스할 수 있습니다.newList$integer또는newList$names.

다른 개체 유형은 다양한 용도로 더 잘 작동할 수 있지만,list객체는 시작하는 좋은 방법입니다.

Java에서도 마찬가지로 R에 정보를 캡슐화하는 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)

슈퍼 할당을 사용할 수도 있습니다.

"<-" 대신 "<-"를 입력합니다.함수는 해당 이름의 개체에 대해 한 수준 높은 함수를 반복적으로 검색합니다.만약 그것이 그것을 찾을 수 없다면, 그것은 세계적인 수준에서 그것을 만들 것입니다.

사용할 수 있습니다.for()와 함께assign()여러 개체를 만듭니다.다음의 예 참조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..$")

이를 처리하는 한 가지 방법은 정보를 기본 정보의 속성으로 지정하는 것입니다.제가 강조해야 할 것은, 저는 이것이 두 정보가 서로에 대한 정보를 가지고 있을 때에만 적절한 것이라고 생각합니다.

예를 들어, 변수 이름 목록을 속성으로 데이터 프레임에 저장하여 "중요 변수" 또는 상당히 수정된 변수의 이름을 저장하는 경우가 있습니다.

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

이렇게 하면 변수 이름 목록을 데이터 프레임 자체와 함께 저장할 수 있습니다.

언급URL : https://stackoverflow.com/questions/8936099/returning-multiple-objects-in-an-r-function