我想使用凸包在点列表周围画一条线。但是,我希望该面积大于最小凸包。我该如何实现这一目标。PS 我正在使用 ConvexHull 的 scipy.spatial 实现,但是它只找到点列表周围的最小区域。
我正在尝试按列拆分数据表,但是一旦我获得数据表列表,它们仍然包含数据表被拆分的列。拆分完成后,我将如何删除此列。或者更优选地,有没有办法如何删除多个列。
这是我的代码:
x <- rnorm(10, mean = 5, sd = 2)
y <- rnorm(10, mean = 5, sd = 2)
z <- sample(5, 10, replace = TRUE)
dt <- data.table(x, y, z)
split(dt, dt$z)
Run Code Online (Sandbox Code Playgroud)
生成的数据表子集看起来像这样
$`1`
x y z
1: 6.179790 5.776683 1
2: 5.725441 4.896294 1
3: 8.690388 5.394973 1
$`2`
x y z
1: 5.768285 3.951733 2
2: 4.572454 5.487236 2
$`3`
x y z
1: 5.183101 8.328322 3
2: 2.830511 3.526044 3
$`4`
x y z
1: …Run Code Online (Sandbox Code Playgroud) 我有一个包含组列的data.table对象.我试图从每个组中删除异常值,但是我无法想出那个很好的解决方案.我的data.table可以使用简单的脚本构建:
col1 <- rnorm(30, mean = 5, sd = 2)
col2 <- rnorm(30, mean = 5, sd = 2)
id <- seq(1, 30)
group <- sample(4, 30, replace = TRUE)
dt <- data.table(id, group, col1, col2)
Run Code Online (Sandbox Code Playgroud)
我一直在尝试按组变量拆分data.frame,但是,它太乱了.如何在没有太多数据转换的情况下"轻松"从data.table中的每个组中"删除"前n%的异常值?
我正在使用data.table包尝试一般的聚合数据.我有多个要汇总的列.我使用以下脚本创建初始数据表:
library(data.table)
dt <- data.table(x.1 = rnorm(10, 20, 3), x.2 = rnorm(10, 20, 3), x.3 = rnorm(10, 20, 3),
y.1 = rnorm(10, 20, 3), y.2 = rnorm(10, 20, 3), y.3 = rnorm(10, 20, 3),
z.1 = rnorm(10, 20, 3), z.2 = rnorm(10, 20, 3), z.3 = rnorm(10, 20, 3))
Run Code Online (Sandbox Code Playgroud)
我想要实现的是通过对每个组应用总和来聚合列{x1,x2,x3,y1,y2,y3,z1,z2,z3} => {x.total,y.total,z.total}列.
我可以使用for循环这样做:
prefixes <- c('x', 'y', 'z')
initial.colnames <- c(names(dt))
for (i in 1:nrow(dt)){
for (pref in prefixes){
dt[,eval(paste0(pref, '.total')) := sum(dt[i, eval(grep(pref, initial.colnames))]), with = TRUE]
}
} …Run Code Online (Sandbox Code Playgroud) 我正在尝试计算数据表中每列的标准统计大小(即方差),可以通过以下方式创建:
library(data.table)
x <- rnorm(10)
y <- rnorm(10)
z <- rnorm(10)
dt <- data.table(x, y, z)
dt[,lapply(.SD, var)]
Run Code Online (Sandbox Code Playgroud)
而且效果很好.但是,如果我的数据表中有NA,我想使用函数参数,如:
dt[,lapply(.SD, var(na.rm = T))]
Run Code Online (Sandbox Code Playgroud)
现在我收到错误:
Error in match.fun(FUN) :
'var(x = dt, na.rm = T)' is not a function, character or symbol
Run Code Online (Sandbox Code Playgroud)
我无法想出这个解决方案.有谁知道如何处理这个问题?