В линейной функции модели, можно написать:R ссылающихся файл данных
result <- lm(r ~ N, data = ds)
Функция знает, смотреть в dataframe DS для переменных г и N
Я написал функцию с именем Check.Data. Аргументы ri и ni являются переменными в файле данных ds.
Check.Data(ri = ds$r, ni = ds$N, data = ds) #This runs
Check.Data(ri = r, ni = N, data = ds) #this does not
Второй вызов функции не работает, потому что он не может найти г: Ошибка в Check.Data (п = г, п = N, данные = DS): объект 'R' не найден
Какие команды мне нужны в функции, чтобы знать, что аргументы для ri и ni являются переменными в ds, не указывая набор данных (например, ri = ds $ r, ni = ds $ N)?
В случае, если вы хотите взглянуть на функции, здесь:
Check.Data <- function(ri= ri, ni=ni, data = data)
{
#make sure values needed are non-missing
if (missing(data)) stop("Function CheckData is terminated because data set name is missing.")
if (missing(ri)) stop("Function CheckData is terminated because ri is missing.")
if (missing(ni)) stop("Function CheckData is terminated because ni is missing.")
#add ri and ni to the data frame named data
data$ri <- ri
data$ni <- ni
#make sure ri is numeric
if(is.numeric(data$ri) == FALSE) stop("Function CheckData is terminated because ri is not numeric.")
#make sure ni is numeric
if(is.numeric(data$ni) == FALSE) stop("Function CheckData is terminated because ni is not integer.")
#does ri have any missing data. if so issue message and stop
if(any(ind.na <- is.na(data$ri))) stop(paste("ri has", sum(ind.na), "missing values. CheckData is terminated."))
#does ni have any missing data. if so issue message and stop
if(any(ind.na <- is.na(data$ni))) stop(paste("ni has", sum(ind.na), "missing values. CheckData is terminated."))
}
«The конкретных командами» будет зависеть от того, что именно вы планируете делать с этими переменными. Техника, которую вы описываете, называется нестандартной оценкой, [это] (http://adv-r.had.co.nz/Computing-on-the-language.html) - хорошее введение. Тем не менее, я бы тщательно рассмотрел вопрос о том, стоит ли использовать возможность «ri = r» вместо «ri =» r »' трудности и сложность реализации нестандартной оценки. – joran
Ew, используя '' 'функции внутри, определенно не рекомендуется. Это только удобная функция для использования на консольном уровне. Научитесь использовать '[[' вместо. –