2014-12-31 6 views
0

나는 함수를 작성 중이며 들어오는 매개 변수를 참조하는 방법을 알아야합니다.R의 함수 매개 변수 참조

sys.argv[1:]. 

가 어떻게 R의 매개 변수의 이름을 참조 할 수 있습니다

예를 들어, 다른 언어로 파이썬이나 많은, 당신은 입력을 참조 할 수는 다음과 같이 매개 변수?

내가 해결하려고하는 특정 매개 변수는 들어오는 매개 변수의 문자열 값을 캡처하므로 내가 반복 할 column_names 목록과 함께 농도로 붙여 넣을 수 있습니다. 여기

는 들어오는 매개 변수를 볼 수 있습니다 만, 그래서 함수 호출의 머리를 :

function(df_in) 

그래서 여기 내가 쓰고 있어요 코드의 예와 나는 dataframe_in의 문자열 값이 아닌 원하는 그것이 참조하는 객체.

col_name <-paste(df_in,varnames[i],sep="$") 

df_in는 "에서는 my_df"를 포함하고 현재 COLUMN_NAME 내가 $ my_col을에서는 my_df로 설정 위의 예에서 컬럼 이름을 가지고 노력하고있어 my_col 경우.

get() 함수를 사용할 생각 이었지만이 상황에서 적용하는 방법을 확실히 알고있었습니다.

덕분에이 라인을 따라

+0

함수의 첫 번째 줄은'df <- substitute (df_in)'와 같아야합니다. 그러면'get()'대신'eval (df)'를 사용할 수 있습니다. 그리고 평가되지 않은'df'도'paste '의 이름으로 사용할 수 있습니다. –

+1

정말 따르지는 않지만 어쩌면 도움이 될 것입니다 :'deparse (substitute (df_in))'은 "df_in"을,'$ '대신'[[]]'를 사용하여 비대화 형 변수에 접근 할 수있다. – baptiste

+0

감사합니다. baptiste - 아래 답변을 선택했지만 deparse 기능으로도 정확했습니다. 감사. – Jazzmine

답변

3

시도 뭔가 :

fn1 <- function(df_in){ in_nam <- deparse(substitute(df_in)) 
     col_names <-paste(in_nam, names(df_in), sep="$") 
     cat(col_names) } 

> dfrm <- data.frame(a=1:10, b=letters[1:10]) 
> fn1(dfrm) 
#dfrm$a dfrm$b 

당신은 varnames은 그래서 당신이 개체에서 열 이름을 원하는 같은데요해야했는데 무슨 말을하지 않았다. BTW, 해당 문자 값을 사용하여 열 값을 참조 할 수있을 것으로 예상하지 마십시오. 그들은 더 이상 언어 객체가 아닙니다.

+0

예, 이름 (df_in) 명령의 출력이됩니다. 고마워, 나는이 해결책을 시도 할 것이다. – Jazzmine

+0

이것을 설명하는 데 사용되는 R 용어는 '대체'가 언어 객체를 반환하고 'deparse'가 평가되지 않은 표현식을 사용하고 문자 표현을 반환한다는 것입니다. –

+0

deparse (substitute()) 메서드는 훌륭하게 작동했습니다. eval (substitute())은 영향을 미치지 않았고 여전히 기본 데이터 프레임을 유지/참조했습니다. 빠른 응답을 보내 주셔서 감사합니다. – Jazzmine