2014-12-31 4 views
0

Я работаю над функцией и должен знать, как ссылаться на входящие параметры.Ссылка на параметр функции в R

Например, в питона или много других языков, вы можете ссылаться на входные параметры что-то вроде этого:

sys.argv[1:]. 

Как я могу ссылаться на имя параметра в R?

Конкретная проблема, которую я пытаюсь решить, заключается в том, что я хочу зафиксировать строковое значение входящего параметра, поэтому я могу вставить его как концентрацию со списком столбцов_имя, которые я хочу перебрать.

Вот голова вызова функции, только так вы можете увидеть входящий параметр:

function(df_in) 

Так вот пример кода, который я пишу, и я хочу строковое значение dataframe_in, а не объект, который он ссылается.

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

если df_in содержал «my_df» и ток имя_столбца my_col, я пытаюсь иметь col_name в приведенном выше примере набор для my_df $ my_col.

Я думал об использовании функции get(), но совершенно уверен, как применить его в этой ситуации.

Благодаря

+0

Первой строкой вашей функции должно быть что-то вроде 'df <- substitute (df_in)'. Тогда вы можете использовать 'eval (df)' вместо 'get()' И unevaluated, '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

Да, это будет результат команды names (df_in). Спасибо, я попробую это решение. – Jazzmine

+0

Терминология R, используемая для описания этого, заключается в том, что 'substitute' возвращает объект языка, а' deparse' принимает неоценимое выражение и возвращает представление символа. –

+0

Метод deparse (substitute()) отлично работал. Значение eval (substitute()), похоже, не оказало влияния и все еще сохраняло/ссылалось на базовый блок данных. Спасибо за быстрый ответ. – Jazzmine

Смежные вопросы