2017-10-07 6 views
0

함수에서 사용 된 입력 데이터 프레임과 비슷한 이름의 네트워크 개체를 하나의 출력으로 갖는 사용자 정의 함수를 만들려고합니다. 이 같은.붙여 넣기에서 개체 이름을 사용하는 방법은 무엇입니까?

node_attributes <- function(i){ #i is dataframe 
j <- network(i) 
##some other function stuff## 
(i,'network',sep = '_')) <- j 
} 

아이디어는 dataframe로 의미있는 내가 변수에 추가 '_network'을 만드는 것입니다. 따라서 내 orignial 데이터 프레임이 foo_bar_data이면 내 출력은 foo_bar_data_network이됩니다.

답변

0

당신은 deparse(substitute(argname))와 입력 변수의 이름을 얻을 수 있습니다 assign

j <- network(i) 
assign(paste0(i,'network',sep = '_'), j) 
0

사용할 수 있습니다.

func <- function(x){ 
    depsrse(substitute(x)) 
} 

func(some_object) 
## [1] "some_object" 

난 당신이 입력의 이름을 사용하는 방법을 완전히 확실하지 않다, 그래서 내가 정말 어떤 표시되지 않는 말했다

node_attributes <- function(i){ 
    output_name <- paste(deparse(substitute(i)), 'network', sep = '_') 
    ## I simplified this since I don't know what the function network is 
    j <- i 
    assign(output_name, j, envir = parent.frame()) 
} 

node_attributes(mtcars) 
head(mtcars_network) 
##     mpg cyl disp hp drat wt qsec vs am gear carb 
## Mazda RX4   21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 
## Mazda RX4 Wag  21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 
## Datsun 710  22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 
## Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 
## Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2 
## Valiant   18.1 6 225 105 2.76 3.460 20.22 1 0 3 1 

@JackStat

의 대답에 비슷한 것을 사용 이런 식의 이유. 일반적으로 함수에서 출력을 반환하는 것이 좋습니다.