使用paste()在R中显示输出

时间:2019-04-21 17:08:51

标签: r

  

下面是我编写的代码,对于某些我我可以显示输出

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 :(得分:0)

您忘记从以下位置分配names

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

只要

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

说明您的情况是什么

您打印了names这是一项功能。在控制台中写names时,您会得到

  

功能(x).Primitive(“名称”)

返回的是打印出来的内容。

完整代码:

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)

     

平均值:4.727273

     

cat(“ Median:”,dt_median)

     

中位数:4

     

paste(c(“ Mode:”,dt_mode))

     

[1]“模式:“” 2“” 4“” 9“

答案 1 :(得分:0)

是的,因为您正在将基本功能name分配给dt_mode,而没有将names(table(data))[table(data)==max(table(data))]分配给任何东西。

如果要获取模式,可以从here开始使用此功能,然后

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

dt_mode <- getmode(data)

cat("Mode: ", dt_mode))