为初学者的问题提前道歉,但我暂时对R一无所知。我正在定义一个函数来在数据帧上运行摘要统计信息,它如下所示:
sumstats = function(y) {
sumst = sapply(y, function(x) {
sumstat = c(
mean(x, na.rm = TRUE),
median(x, na.rm = TRUE),
sd(x, na.rm = TRUE),
min(x, na.rm = TRUE),
max(x, na.rm = TRUE)
) names(sumstat) = c("Mean", "Median", "SD", "Min", "Max") sumstat
}) aperm(sumst)
}
然而,我不断收到以下错误,这表明我想要定义不同列名称的方式有问题:
Error: unexpected symbol in:
" max(x, na.rm = TRUE)
) names"
你能告诉我我的语法是怎么造成错误的吗?
感谢
您需要在sumstat的)和名称(sumstat)的)之间添加一行新行,如
sumstats = function(y) {
sumst = sapply(y, function(x) {
c(
mean(x, na.rm = TRUE),
median(x, na.rm = TRUE),
sd(x, na.rm = TRUE),
min(x, na.rm = TRUE),
max(x, na.rm = TRUE)
)
names(sumstat) = c("Mean", "Median", "SD", "Min", "Max")
sumstat
})
aperm(sumst)
}
您也可以命名矢量中的项目,并跳过名称(sumstat)完全
sumstats = function(y) {
sapply(y, function(x) {
sumstat = c(
Mean = mean(x, na.rm = TRUE),
Median = median(x, na.rm = TRUE),
sd = sd(x, na.rm = TRUE),
Min = min(x, na.rm = TRUE),
Max = max(x, na.rm = TRUE)
)
})
aperm(sumst)
}
您在c
结束的同一行启动names
函数。只需更改代码的格式即可。
请注意,使用<-
将事物分配给对象更安全。=
用于将值传递给函数参数。
sumstats <- function(y) {
sumst <- sapply(
y,
function(x) {
sumstat <- c(
mean(x, na.rm = TRUE),
median(x, na.rm = TRUE),
sd(x, na.rm = TRUE),
min(x, na.rm = TRUE),
max(x, na.rm = TRUE)
)
names(sumstat) <- c("Mean", "Median", "SD", "Min", "Max")
return(sumstat)
}
)
aperm(sumst)
}