#r #data.table
#r #данные.таблица
Вопрос:
gradSummary lt;- function(grads) { grads$Total[is.na(grads$Total)] lt;- 0 total.grads lt;- sum(grads$Total) data.table[, .(SchoolPerc = round(100*sum(grads$Total)/total.grads, 2), avgRank = round(mean(grads$Rank), 0), avgSalary = round(mean(grads$Median), 2)), by = grads$Major_category][order(grads$avgRank)] } gradSummary(grads)
Кто-нибудь знает, почему этот вывод кода возвращает «.» не найден? Я загрузил библиотеку data.table.
Ответ №1:
Существует проблема, которую вы используете data.table
в качестве объекта. Что — то вроде этого должно сработать:
gradSummary lt;- function(grads) { grads$Total[is.na(grads$Total)] lt;- 0 total.grads lt;- sum(grads$Total) data.table::data.table(grads)[, .(SchoolPerc = round(100*sum(grads$Total)/total.grads, 2), avgRank = round(mean(grads$Rank), 0), avgSalary = round(mean(grads$Median), 2)), by = grads$Major_category][order(grads$avgRank)] } gradSummary(grads)
Ответ №2:
Это не так, как это работает. data.table
это функция для создания data.table
объекта, и вы пытаетесь выполнить некоторые конкретные операции для data.table
объекта класса. Но вы можете сделать это только после того, как сделаете data.table
объект.
library(data.table) data.table[, .(a = 1 2)] #gt; Error in .(a = 1 2): could not find function "."
Правильный синтаксис-это:
library(data.table) data.table(a = 1 2) #gt; a #gt; 1: 3
Тем временем @mharinga опубликовал ответ с примером, характерным для вашего кода, но я оставляю этот ответ, потому что, возможно, мое объяснение будет полезно для вас.
Комментарии:
1. Ваш ответ объясняет проблему гораздо лучше, чем мой:-)