Мне известно, что на этот вопрос довольно много ответов, и я читаю их с 10 утра сегодня утром (сейчас 5 вечера здесь).
Я пытался выяснить, что, как мне показалось, было бы просто, как разместить подкадр данных внутри моей функции.Все, что я пытаюсь сделать, это распечатать вектор, который в идеале был бы получен путем подстановки DF.Проблема, с которой я сталкиваюсь, заключается в том, что я использую тот же desired_column_name
в другом месте, ссылаясь непосредственно на фрейм данных, и поэтому я не могу просто «добавить цитаты» к своему аргументу.Я попытался добавить цитаты к аргументу desired_column_name
и затем применить noquote
из функции, но это тоже не сработало и ухудшило ситуацию.
Вот простые входные данные, которые я использую:
S = c(1,0,0,4,1,6,6,3,5,3,1)
population = data.frame(S)
Вот код для справки:
proportion_of_elements= function(df_for_use, desired_column_name, desired_elements,logical){
DF = df_for_use
chr_desired_column_name = as.character(desired_column_name)
desired_column = DF[,chr_desired_column_name]
vec_length = length(desired_column)
num_of_desired_element = sum(desired_column == desired_elements)
proportion = num_of_desired_element/vec_length
statement_for_pop_prop = c("The proportion of ", desired_elements,'\'s', "from the population is: ", proportion)
format_vers_of_statement_for_pop_prop = str_c(statement_for_pop_prop, collapse = " ")
# summary = summarize(data_frame, mean = mean(desired_column_name, na.rm = TRUE), var = var(desired_column_name, na.rm = TRUE), sd = sd(desired_column_name, na.rm = TRUE))
#
# statement_of_summary = c("The summary statistics are the following: ", summary)
#
# format_of_summary = str_c(statement_of_summary, collapse = " ")
#print(format_vers_of_statement_for_pop_prop)
print(desired_column)
}
Воспроизводимый пример:
proportion_of_elements(population,S,1,FALSE)
Требуемый выход:
1 0 0 4 1 6 6 3 5 3 1
Токовый выход:
Error in `[.data.frame`(DF, , chr_desired_column_name) :
undefined columns selected
Как уже упоминалось ранее, я могу получить желаемый результат, но для этого потребуется поместить кавычки вокруг desired_column_name
аргумент, который может привести ко всему остальному.
Как вы можете видеть, я также попытался предложить другое решение переопределения самого фрейма данных внутри функции.Я попробовал это с помощью DF
.Закомментированный код - это та часть, которая использует desired_column_name
без кавычек.
Если мой код слишком сложный, я прошу прощения.Основная проблема, которую я вижу, связана с тем, как интерпретируется desired_column
.Так что это та часть, на которой нужно сосредоточиться.
Спасибо всем, кто дает какие-либо предложения.
РЕДАКТИРОВАТЬ
После предложения, данного Дж. ГротендикомЯ отредактировал свой код и получил следующую ошибку: