下面是我编写的代码,对于某些我我可以显示输出
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的值,它具有多个值,我该怎么修改才能正确获得输出?
谢谢!
答案 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))