- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
考虑:
dt <- data.table(a=factor(rep(c("a", "b"), 5)), b=1:10)
dt[, list(mean(b), a), by=a]
产生:
a V1 a
1: a 5 1
2: b 6 2
还有:
Classes 'data.table' and 'data.frame': 2 obs. of 3 variables:
$ a : Factor w/ 2 levels "a","b": 1 2
$ V1: num 5 6
$ a : int 1 2
- attr(*, ".internal.selfref")=<externalptr>
注意最后一列。实际的 by
列本身没有问题,当您尝试在 j
中显式地重新使用 by
列时,就会出现问题。我也相信 .BY
变量有同样的问题。这是在 1.9.2 中,在 Win 7 上使用 R 3.0.2 和 Rstudio(尽管在 Mac OS 10.8 上也观察到)。这曾经适用于早期版本(不确定哪个,从内存来看可能是错误的)。
如果我做了一些愚蠢的事情,请先在这里发帖。
此外,未分组的 by
变量似乎不再可用。例如:
dt[, list(mean(b), a[[2]]), by=a]
会产生越界错误,尽管情况可能总是如此。我本来希望 j
中的 a
在 dt
中得到完整的评估,所以 a[[2]]
应该工作(无论如何,在我的脑海里,也许它从来没有,也从来没有打算这样做)。
session 信息:
R version 3.0.2 (2013-09-25)
Platform: x86_64-pc-linux-gnu (64-bit)
locale:
[1] C
attached base packages:
[1] graphics grDevices utils datasets stats methods base
other attached packages:
[1] data.table_1.9.2
loaded via a namespace (and not attached):
[1] Rcpp_0.11.1 functional_0.4 plyr_1.8.1 reshape2_1.2.2
[5] stringr_0.6.2 tools_3.0.2
最佳答案
您的帖子中有三个问题。我会按顺序回答。
引用 j
中的因子列而不保留类已在 1.9.3 中修复(bug #5437 IIRC)。由于 1.9.0 中的各种增强功能(以及 R3.1.0 IIRC 的一些更改),这是一个微小的回归。现在也添加了测试来捕捉这一点。
require(data.table) ## 1.9.3
dt <- data.table(a=factor(rep(c("a", "b"), 5)), b=1:10)
str(dt[, list(mean(b), a), by=a])
# Classes ‘data.table’ and 'data.frame': 2 obs. of 3 variables:
# $ a : Factor w/ 2 levels "a","b": 1 2
# $ V1: num 5 6
# $ a : Factor w/ 2 levels "a","b": 1 2
# - attr(*, ".internal.selfref")=<externalptr>
.BY
的问题也已在 1.9.3 中修复:
dt[, print(.BY), by=a]
# $a
# [1] a
# Levels: a b
# $a
# [1] b
# Levels: a b
# Empty data.table (0 rows) of 1 col: a
dt[, list(mean(b), a[[2]]), by=a]
# Error in `[[.default`(a, 2) : subscript out of bounds
这是因为 by
中的变量/列在默认情况下可用作 length=1
向量。毕竟,这是您要分组的变量。
但是,我已经向@Matt 和@eddi 提出了此功能的潜在问题。你可以找到我和@eddi here 之间的简短讨论。评论下。我也写信给马特,目前正在讨论中。这将很快得到解决并记录在案,无论解决方案是什么。
我现在的立场是 by
中的列不应掩盖 dt
中的列。这从 bug #5191 开始,基本上是这样的:
DT <- data.table(x=1:5, y=6:10)
DT[, sum(x), by=x%%3L]
# x V1
# 1: 1 1
# 2: 2 2
# 3: 0 0
实际结果应该在哪里:
DT <- data.table(x=1:5, y=6:10)
DT[, sum(x), by=list(grp=x%%3L)]
# grp V1
# 1: 1 5
# 2: 2 7
# 3: 0 3
结果不正确,因为 by
列 x
屏蔽了 DT
中的列 x
对应于每个团体。在这种情况下,发生这种情况是因为我们允许在 by
中使用表达式。
但是,即使情况并非如此,它也会扩展。考虑案例:
> DT[, sum(y), by=list(y=x)]
# y V1
# 1: 1 1
# 2: 2 2
# 3: 3 3
# 4: 4 4
# 5: 5 5
这里发生的事情是,按列命名 y
导致 DT
中的 y
被屏蔽。
恕我直言,应该做的是 by
不应该屏蔽 DT
中将在 j
中使用的列全部。相反,如果需要引用分组变量,他们应该使用已经存在的 .BY
变量(或者简单地使用 [1L]
对第一个索引进行子集化),如下所示:
> DT[, print(.BY$x), by=x]
# [1] 1
# [1] 2
# [1] 3
# [1] 4
# [1] 5
# Empty data.table (0 rows) of 1 col: x
这只是我的意见,可能还有其他理由支持保留当前功能并仅修复这些潜在的错误案例。我们必须讨论并解决这个问题,并根据我们得出的结论,相应地记录下来。
完成后我会更新这篇文章:)。
关于r - data.table 将 `by` 中的因子转换为基础整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23366292/
我有这种格式的data.frame: 'data.frame': 244 obs. of 1 variable: $ names: Factor w/ 244 levels "ERA","BA
这就是问题: write a Java Program that accepts a String and an integer stretch factor P as parameters and
该示例显示了不同工厂的产量测量值,第一列表示工厂最后一列是生产量。 factory % mutate(factory=fct_lump(factory,2)) factory produc
我正在使用分类变量运行回归并遇到 this question .在这里,用户想要为每个虚拟对象添加一列。这让我很困惑,因为我虽然列有很长的数据,包括使用 as.factor() 存储的所有虚拟数据。相
假设在 R 中有一个 Data.Frame 对象,其中所有字符列都已转换为因子。然后我需要“修改”与数据帧中某一行相关联的值——但将其编码为一个因子。我首先需要提取一行,所以这就是我正在做的。这是一个
利用下面的可重现数据, dat head(dat) Bin Number 1 1 3 2 1 5 3 1 4 4 1 5 5 1
我有一组包含多个变量的数据。其中一个变量 - 阶乘包含组的名称 - A、B、C 等。其余变量是数字。 > data1 Group Value 1 A 23 2 A
我有一组编码为二项式的变量。 Pre VALUE_1 VALUE_2 VALUE_3 VALUE_4 VALUE_5 VALUE_6 VALUE_7 VALUE_8 1 1 0
我的问题与 this one 非常相似和 this other one ,但我的数据集有点不同,我似乎无法使这些解决方案起作用。如果我误解了什么并且这个问题是多余的,请原谅。 我有一个这样的数据集:
我一直在尝试生成一个带有离散 x 变量的堆积面积图(因为我想显示财政年度,即“2013/14”,而不是日历年)。但是,将 x 轴变量转换为一个因子会阻止在最终图表中呈现 geom。 有解决办法吗? l
只是一个简单的问题来确认我的想法, 使用负载因子 1.0 的哈希表的复杂性将是二次时间,用以下符号 O(n^2) 表示。 这是因为必须不断调整大小并一遍又一遍地插入。如果我错了,请纠正我。 谢谢 最佳
我正在尝试使用 kaggle 的一些数据集进行房价预测。 这是我的代码 library(ggplot2) dataset=read.csv('train(1).csv') dataset_test=r
我正在用 Angular 构建一个类似咆哮的 UI。我想将其公开为工厂(或服务),以使其在我的 Controller 中可用。调用 Growl.add 将导致 DOM 发生变化,所以看起来我应该有一个
我正在尝试将 pandas 数据框的一列转换为因数,因为我试图在 R 中调用的函数需要因数。 pandas2ri.activate() #second column of labels has
我正在尝试使用 plotly 绘制一个以字符串(组合数)作为 x 轴的条形图。 (“1”、“2”、“3”、“4 - 5”、“6 - 8”、“9 - 13”、“14 - 21”、“22 - 34”、“3
我有一个包含 NA 的数据集。 此外,它还有一些列需要factors()。 我正在使用 caret 包中的 rfe() 函数来选择变量。 似乎 rfe() 中的 functions= 参数使用 lmF
我有一个 .csv 文件,其中每个字段用于日期时间、日期和时间。 最初它们都是字符字段,我已经相应地转换了它们。 在我的代码结束时,如果我这样做: str(data) 我会得到 datetime: P
我有一个如下所示的数据集: data.flu data.flu chills runnyNose headache fever flu 1 1 0 M
我正在使用 QMainWindow 在 C++ 中手动布置 Qt 应用程序。我希望在屏幕底部有两个并排停靠的小部件,但我希望它们具有不成比例的宽度。目前,我只能让它们具有相同的宽度。有没有办法设置拉伸
我需要通过在两个主机(2 个 Java 进程)之间发送合成调用来计算 VOIP 质量。我应该找出 MOS、抖动和 R 因子(VOIP 质量指标)。根据目前的研究,我发现我应该在两台主机之间发送 RTP
我是一名优秀的程序员,十分优秀!