在这里尝试aggregate另一个问题时,我遇到了一个相当奇怪的结果.我无法弄清楚为什么,我想知道我在做什么是完全错误的.
假设,我有data.frame这样的:
df <- structure(list(V1 = c(1L, 2L, 1L, 2L, 3L, 1L),
V2 = c(2L, 3L, 2L, 3L, 4L, 2L),
V3 = c(3L, 4L, 3L, 4L, 5L, 3L),
V4 = c(4L, 5L, 4L, 5L, 6L, 4L)),
.Names = c("V1", "V2", "V3", "V4"),
row.names = c(NA, -6L), class = "data.frame")
> df
# V1 V2 V3 V4
# 1 1 2 3 4
# 2 2 3 4 5
# 3 1 2 3 4 …Run Code Online (Sandbox Code Playgroud) 我有一个载体v,我想删除的向量的最大值v从v.我可以发现每个值重复多少次,但是如何v从vR中删除from的最大值?
v = c(0.25, 0.25, 0.3, 0.3, 0.3, 5, 6, 6.5, 8, 8, 8)
max(v)
[1] 8
j = as.numeric(unname(table(v)))
j
[1] 2 3 1 1 1 3
Run Code Online (Sandbox Code Playgroud)
另外,如果我有另一种载体a是
a = rep(1, length(v))
Run Code Online (Sandbox Code Playgroud)
长度相同v,我想删除最后3个,我该怎么办?
我有一些像
library(data.table) # v 1.12.3
foo <- data.table(x = sample(letters, 10^6, replace = T), y = 1)
foo[x == "a", y := 0]
indices(foo) # x
Run Code Online (Sandbox Code Playgroud)
如您所见,索引是在column上自动创建的x。在这种情况下,我不希望创建索引。我知道我可以用类似的方法来预防
options(datatable.auto.index = FALSE)
foo[x == "a", y := 0]
options(datatable.auto.index = TRUE)
Run Code Online (Sandbox Code Playgroud)
但这似乎是糟糕的设计,因为
foo[x == "a", y := 0]出现错误,将不会重新打开自动索引这里有更好的选择foo[x == "a", y := 0, autoindex = FALSE]吗?
另外,我想我可以允许创建索引,然后用删除它,setindex(foo, NULL)但是我担心这会增加性能成本。另外,它看起来比应该的还杂乱。