Я пытаюсь преобразовать символьную переменную в логическое выражение, чтобы использовать ее позже в аргументе подмножества функции subset(), и все это находится внутри более крупной функции, называемой Early_prep(), которую я создал. Проблема в том, что когда я выполняю
early_prep(file_name = "n44.txt", keep_rows = "block > 1")
он удаляет все строки в моем фрейме данных raw_data вместо удаления только тех, в которых блок> 1.
Ниже приведена соответствующая часть функции early_prep()
:
early_prep <- function(file_name,keep_rows = FALSE){
read_data <- function(file_name){
extension <- substr(file_name, nchar(file_name) - 3, nchar(file_name))
if (extension == ".txt"){
raw_data <<- read.table(file_name, header = TRUE)
# Print to console
print("#### Reading txt file ####", quote = FALSE)
} else if (extension == ".csv"){
raw_data <<- read.csv(file_name, header = TRUE)
# Print to console
print("#### Reading csv file ####", quote = FALSE)
} else {
# Stops running the function
stop("#### file_name should end with txt or csv extension ####", quote = FALSE)
}
}
read_data(file_name)
if (keep_rows != FALSE) {
keep_rows <- as.logical(keep_rows)
raw_data <<- subset(raw_data, keep_rows)
# Print to console
print("#### Deleting unnecessary rows in raw_data ####", quote = FALSE)
}
}
early_prep(file_name = "n44.txt", keep_rows = block > 1)
. Вот как используется аргумент «подмножество»subset
и как вызываются все функции регрессии, когда им переданы выражения в их аргументы «подмножества». Однако в разделеsubset
сообщается, что это вспомогательная функция, не предназначенная для использования внутри функций. Вы бы не хотели выполнять предварительную оценкуas.logical(keep_rows)
, потому что выражение не имело бы надлежащей среды. Это то, чтоsubset
должен обеспечивать. - person IRTFM   schedule 14.06.2015