функция «.» не найдена при создании data.table

#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. Ваш ответ объясняет проблему гораздо лучше, чем мой:-)