- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我最近在 R 中遇到的一个常见问题 data.table
我有一个索引表,比如 DT1。列 x 将是索引的子集。我将使用这些索引处理更大原始表的子表。子表通常会从 1 到 N 进行索引。(即 y 列)
然后例如,我会遇到一个表,其中包含原始索引的索引对,我想知道相应的新索引。
这是它的样子
DT1 <- data.table(x=c(0,3,5),y= c(11,22,33))
DT2 <- data.table(x=c(3,3,0,0,5),x=c(0,5,0,3,5))
# > DT1
# x y
# 1: 0 11
# 2: 3 22
# 3: 5 33
# > DT2
# x x
# 1: 3 0
# 2: 3 5
# 3: 0 0
# 4: 0 3
# 5: 5 5
这是我找到的一个曲折的方法
cbind(DT1[DT2[,1,with=FALSE],on="x"][,2,with=FALSE],DT1[DT2[,2,with=FALSE],on="x"][,2,with=FALSE])
# y y
# 1: 22 11
# 2: 22 33
# 3: 11 11
# 4: 11 22
# 5: 33 33
使用 sapply
执行此操作的更基本方法给出相同的结果
tab=DT1$x
lookup <- function(value){DT1$y[which(tab==value)]}
colnames(DT2) <- c("x","xx")
ans <- as.data.table(cbind(sapply(DT2$x,lookup),sapply(DT2$xx,lookup)))
colnames(ans) <- c("y","y")
但是,第一个解决方案对我来说有点难看
我不喜欢第二个,因为我需要在每次使用 lapply
中的函数查找时定义一个值给选项卡。 .如果我必须在不同的表中查找,我可以选择创建一个特定于该表的新查找函数,或者将其存储在内存中的(临时)变量选项卡中。也许有办法做到 lapply
具有两个变量的函数 lookup <-function (tab,value) {...}
?我不知道
我敢肯定还有很多其他方法。我不确定第一个解决方案到底在做什么。基本上是 data.table
中的语法与(内部和外部)JOINS 有关。但在最终输出中,我想保留表 DT2 的原始顺序。将列 x 设置为 DT2 的键将对该列进行排序,生成类似 merge
的内容不适应吗?
我很乐意听取您的意见,什么是最好的实现 - 我相信有很多更好的实现 - 而且,在处理非常非常大的表时最有效。
最佳答案
惯用的 data.table 方法是在加入 时更新 DT2
,如下所示:
require(data.table) # v1.9.6
setnames(DT2, c("a", "b")) # no duplicate names!!
for (nm in names(DT2)) {
DT2[DT1, paste0(nm, ".val") := y, on = structure("x", names=nm)]
}
DT2[]
# a b a.val b.val
# 1: 3 0 22 11
# 2: 3 5 22 33
# 3: 0 0 11 11
# 4: 0 3 11 22
# 5: 5 5 33 33
也许您可以使用 lapply()
隐藏循环。如果 DT2
改为如下(长格式;参见 DT3
):
DT3 = melt(DT2, measure = c("a", "b"), variable.name = "id", value.name = "x.val")
那么你可以这样做:
DT3[DT1, y.val := y, on = c(x.val = "x")]
您可以使用 y.val := i.y
更明确地表示您指的是与 i 对应的 data.table 中的
参数..(当它们都有共同的列名时很有用)。y
列
关于使用 data.table 在 R 中重建索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33793979/
如果我使用 alter index x rebuild 重建不可用的索引,是否会重新评估之前使用该索引的任何 SQL 的执行计划? 我知道在我使用的数据库版本 - Oracle 10.2.0.4.0
我正在研究 3d 重建。现在当我考虑一对图像时。我有一组对应点。我有我的相机详细信息。例如我有焦点细节,旋转和平移矩阵(4 * 4)。我想在 3D(三角剖分)中投影我的点。因此,据我所知,因子代数非常
从教程中:https://programtalk.com/vs2/?source=python/8176/opencv-python-blueprints/chapter4/scene3D.py 我不
我需要您的帮助和建议。这个问题包括以下几项:某房间的照片,该房间站在严格固定位置的房间内(一个房间围绕轴线旋转)。如何将所有这些图片组合在一起,从而产生一种效果,就像我们用眼睛看到的一样?从一点开始就
嘿那里,以下问题:我在工作中使用一个相当奇怪的 Linux 发行版(Centos 5),它似乎有一个较旧的内核(或者至少在内核中存在一些差异),并且您不能简单地更新它。我需要安装的程序需要一个函数 c
我读了一些关于受限玻尔兹曼机的文章。这些机器的重建能力经过了测试。我了解训练是如何进行的,但不了解重建是如何完成的。有人可以给我一些提示吗? 最佳答案 杰夫·辛顿 (Geoff Hinton) 的演讲
如果轻量级迁移失败,我将尝试重建核心数据数据堆栈,并将用户送回登录屏幕。我正在通过将一对多关系更改为一对一关系来对此进行测试。 起初,我在删除新的 persistentStoreCoordinator
以下所列示例中中 `table_name` 表示数据表名,`index_name` 表示索引名,column list 表示字段列表(如:`id`,`order_id`)。 1、创建索引 索引的
当您根据 ListView.builder 和 ListView.separated valueKey = key; return _messages
切换底部导航页面后,我有一个非常烦人的谷歌地图 flutter 重建问题。我已经坚持了最后一次缩放和相机位置,但是每次我进入 map 页面时,小部件都会自行重建。如何预防? 最佳答案 采用 Autom
我是 Python 的新手。我在重建一个错误的 Dataframe 时遇到了麻烦。我的数据框如下所示: df = pd.DataFrame({'col1': ['id 1', 'id 2', 'tes
我正在尝试从 2 个图像中实现 3d 重建。我遵循的步骤是, 1. Found corresponding points between 2 images using SURF. 2. Impleme
// Start with this JSON var initialJson = { "rows": [{ "ID": 123, "Data": 430910, "Ver
在有状态的小部件中,我有一个导航部分,用户可以在其中选择父项,并在子项下方显示。 当我选择父级也可以重建子部件时,但是当我导航抛出父项而不选择一个子部件时,父级也可以重建(这是正常的),但是子部件也可
我有一个网络摄像头,它可以围绕人的头部以给定的角度步长旋转,并为每一步获取一张图片。 我正在寻找一个免费的开源库,该库从获取的图像集开始,使我能够生成代表人头部的 3D 表面,或者至少是定义明确的 3
我想从一行中读取一个字符串,然后将其放入一个变量中,该变量随后用作文件名。该字符串位于 .csv 文件中的第二行末尾。由于不必要的标题,需要删除第一行。还有‘;’旧 .csv 文件中使用的内容需要替换
我正在使用file-embed如此封装: import qualified Data.ByteString as B import qualified Data.ByteString.Internal
我的 makefile 总是重建,不明白为什么.. 这里是: SRC = $(DIR)/my_getnbr.c \ $(DIR)/my_isneg.c \ $(DI
我有一个附带编辑器的 Eclipse 插件。 我添加了更改语法突出显示颜色的首选项,但这些更改仅在我手动重新启动编辑器后才适用。 我通过一个 DefaultDamagerRepairer 实现了语法高
我有一段 php 可以输出 div(取决于数组中有多少个)并为该 div 分配一个 id(即 div_1、div_2)等 我还设置了一个隐藏字段,其中包含输出了多少个 div 的计数(divcount
我是一名优秀的程序员,十分优秀!