Использование paste () для отображения вывода в R - PullRequest
0 голосов
/ 21 апреля 2019

Ниже приведен код, который я написал, для некоторых я могу отобразить вывод

data <- c(4,5,1,4,2,7,2,6,9,9,3)

#Mean
dt_mean = mean(data) 

#Median
dt_median = median(data)

#Mode
y <- table(data)
names(table(data))[table(data)==max(table(data))]

dt_mode <- names

#Output
cat("Mean: ", dt_mean)
cat("Median: ", dt_median)
paste(c("Mode: ", dt_mode))

Я получаю вывод для среднего и медианного значения в консоли правильно, но для режима отображается следующий вывод:

{1] "Mode: "                ".Primitive(\"names\")"

Что касается значения mode, в котором есть несколько значений, что я должен изменить, чтобы получить вывод правильно?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 21 апреля 2019

Да, потому что вы назначаете примитивную функцию name на dt_mode и не назначаете names(table(data))[table(data)==max(table(data))] для чего-либо.

Если вы хотите получить режим, вы можете использовать эту функцию с здесь , а затем

getmode <- function(v) {
   uniqv <- unique(v)
   uniqv[which.max(tabulate(match(v, uniqv)))]
}

dt_mode <- getmode(data)

cat("Mode: ", dt_mode))
0 голосов
/ 21 апреля 2019

Вы забыли назначить names из:

names(table(data))[table(data)==max(table(data))]  

просто выполните

dt_mode <- names(table(data))[table(data)==max(table(data))] 

Объяснение того, что произошло в вашем случае:

вы напечатали names которая является функцией.Когда вы пишете names в своей консоли, вы получаете

function (x) .Primitive ("names")

это возвращение того, что было напечатано.

Полный код:

data <- c(4,5,1,4,2,7,2,6,9,9,3)

#Mean
dt_mean = mean(data) 

#Median
dt_median = median(data)

#Mode

y <- table(data)
dt_mode <- names(table(data))[table(data)==max(table(data))]

#Output
cat("Mean: ", dt_mean)
cat("Median: ", dt_median)
paste(c("Mode: ", dt_mode))

Вывод:

cat ("Mean:", dt_mean)

Mean: 4.727273

cat ("Median:", dt_median)

Median: 4

paste (c ("Mode:", dt_mode))

[1] "Mode:""2" "4" "9"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...