Вы можете просто использовать имя столбца напрямую:
df <- data.frame(A=1:10, B=2:11, C=3:12)
fun1 <- function(x, column){
max(x[,column])
}
fun1(df, "B")
fun1(df, c("B","A"))
Нет необходимости использовать substitute, eval и т. д.
Вы даже можете передать нужную функцию в качестве параметра :
fun1 <- function(x, column, fn) {
fn(x[,column])
}
fun1(df, "B", max)
В качестве альтернативы, использование [[
также работает для выбора одного столбца за раз:
df <- data.frame(A=1:10, B=2:11, C=3:12)
fun1 <- function(x, column){
max(x[[column]])
}
fun1(df, "B")
помещает добавляет новую строку, запись не делает. Технически, помещает, добавляет разделитель записей (который обычно является новой строкой) к выводу, если это не имеет один в конце. запишите выводы только, что это дано.
В случаях как это я всегда запускаю с документации Ядра Ruby, в этом случае класс IO .
ios.puts(obj, ...) => nil
Записи данные объекты к iOS как с
IO#print
. Пишет разделитель записей (обычно новая строка) после любого, которые уже не заканчиваются последовательностью новой строки. Если названо с аргументом Array, пишет каждый элемент на новой строке. Если названо без аргументов, производит единственный разделитель записей.
ios.write(string) => integer
Записи данная строка к iOS. Поток должен быть открыт для записи. Если аргументом не будет строка, то он будет преобразован в строку с помощью
to_s
. Возвращает число записанных байтов.