Я пытаюсь написать функцию, которая откроет некоторые .csv-файлы и заготовку нескольких вычислений на определенных частях этих фреймов. У меня возникли проблемы с передачей имени столбца в качестве параметра в функции, и я не уверен, почему. Так что-то вроде этого (минимальный рабочий пример, моя функция является более сложной, чем это):Использование имен столбцов csv в качестве параметра в функции R
MyFunction <- function(file, columnname){
data <- read.table(file,sep=",",header=TRUE);
mean(data$columnname);
}
У меня есть .csv в моем рабочем столе под названием «test.csv», и все это имеет в нем столбец с названием «числа» и числа 1:10. Если я бегу либо из них:
MyFunction("~/Desktop/test.csv",numbers)
MyFunction("~/Desktop/test.csv","numbers")
Я получаю эту ошибку:
[1] NA
Warning message:
In mean.default(data$columnname) :
argument is not numeric or logical: returning NA
Однако, если я запускаю это:
data <- read.table("~/Desktop/test.csv",sep=",",header=TRUE);
mean(data$numbers);
я получаю это:
[1] 5.5
... это то, что я хочу.
Я не уверен, как моя функция отличается от того, как это делается вручную. Я могу использовать параметры функции для поиска и открытия файла, но использование параметра функции в параметре $ $, по-видимому, вызывает ошибку. Почему это? Какое обходное решение существует?
Вы могли бы просто использовать кронштейн индексацию вместо индексацию '$'. Например, получите номер столбца с чем-то вроде «Idx <- match (имя столбца, имена (данные))», а затем «mean (data [, Idx])». – nrussell
На самом деле я использовал это, хотя оба ответа были очень полезными! – wugology