r - 如何修剪r中的向量?
问题描述
我正在尝试按百分比修剪 r 中的向量。该函数应丢弃 X 的最低 5% 和最高 5% 值,然后返回 X 的均值、方差和中位数。
my_aggregation <- function(x,is.truncated=FALSE){
if (is.truncated==FALSE) return(data.frame(mean = mean(x), med = median(x), var = var(x)))
if (is.truncated==TRUE) Trim(x,0.05) return(data.frame(mean = mean(x), med = median(x), var = var(x)))
}
我试图分配给这样的新变量
if (is.truncated==TRUE) x2 <- Trim(x,0.05) return(data.frame(mean = mean(x2), med = median(x2), var = var(x2)))
没有运气。我没有找到问题的原因是因为我是新手,而且当我运行它时
my_aggregation <- function(x,is.truncated=FALSE){
if (is.truncated==FALSE) return(data.frame(mean = mean(x), med = median(x), var = var(x)))
if (is.truncated==TRUE)return(data.frame(mean = mean(x), med = median(x), var = var(x)))
if (is.truncated=="BOTH") return({x*2})
}
一切正常。也许它与 Trim() 函数有关,但我不知道究竟是什么。无论如何,这是我得到的错误。
Error: unexpected symbol in:
" if (is.truncated==FALSE) return(data.frame(mean = mean(x), med = median(x), var = var(x)))
if (is.truncated==TRUE) Trim(x,0.05) return"
> if (is.truncated=="BOTH") return({x*2})
Error: object 'is.truncated' not found
> }
Error: unexpected '}' in "}"
如果您对我如何获得相同的结果有其他建议,我会全力以赴。
解决方案
目前尚不清楚Trim
您的问题是什么,也不清楚is.truncated
. 我最好的猜测是,您希望获得汇总统计信息,但要控制用户是否可以修剪掉底部的 5%、顶部的 5%,或两者兼而有之。如果是这样,你可以这样做:
my_aggregation <- function(x, truncate = c("none", "lower", "upper", "both"))
{
truncate <- match.arg(truncate, truncate)
keep <- !logical(length(x))
if(truncate == "lower" | truncate == "both")
keep[x < quantile(x, 0.05)] <- FALSE
if(truncate == "upper" | truncate == "both")
keep[x > quantile(x, 0.95)] <- FALSE
x <- x[keep]
return(data.frame(min = min(x), max = max(x), mean = mean(x),
med = median(x), var = var(x)))
}
这允许您执行以下操作:
my_aggregation(1:100, "none")
#> min max mean med var
#> 1 1 100 50.5 50.5 841.6667
my_aggregation(1:100, "lower")
#> min max mean med var
#> 1 6 100 53 53 760
my_aggregation(1:100, "upper")
#> min max mean med var
#> 1 1 95 48 48 760
my_aggregation(1:100, "both")
#> min max mean med var
#> 1 6 95 50.5 50.5 682.5
推荐阅读
- php - 如何发布 API 的新版本?
- javascript - 使用 Javascript 添加文本框
- python - 如何将熊猫列作为键值对添加到现有的python字典
- javascript - 修复后更改滚动上 div 的不透明度
- c++ - 如何纠正水平翻转功能以防止它改变图像的颜色
- c++ - 如何将 s.st_dev 转换为 /sys/block/
- prolog - Prolog程序未退出
- python - 如何根据具有日期范围的另一个 DataFrame 中的列在 DataFrame 中搜索价格列
- python - 使用 Python 编写 HTML 中的 if 语句
- google-analytics - 事件匹配必须在网页浏览匹配之后发送,但此事件匹配之前没有网页浏览