列表列中的设置操作

2024-05-08

我正在尝试做集合运算在存储在列表列中的向量之间,例如this https://stackoverflow.com/questions/38712196/text-file-to-dataframe-with-a-list-column.

DT  <- data.table(exp = c("exp1", "exp2", "exp2"), 
                  sample = c(1L, 1L, 2L), 
                  listdata = list(c(2L,5L), c(2L,3L,5L,7L), c(1L,2L,6L)))

> DT
    exp sample listdata
1: exp1      1      2,5
2: exp2      1  2,3,5,7
3: exp2      2    1,2,6

虽然很麻烦,但我可以做

DT$inc = list(setdiff(unlist(DT$listdata[2]), unlist(DT$listdata[1])))

并获取一个新的列表列,其值为c(3,7)。但是如果我尝试使用计算当前行和第一行之间的差异

DT$inc = list(list(setdiff(unlist(DT$listdata, recursive = FALSE), unlist(DT$listdata[1]))))

期待新专栏“inc”

0
c(3,7)
c(1,6)

I get c(3,7,1,6)。显然unlist将整个列表列压平在一起。知道发生了什么事吗?

我也在学习 dplyr 和 data.table。因此,如果您可以使用其中之一提供解决方案,那将会非常有帮助。


[...]我尝试计算当前行和第一行之间的差异

嗯,你可以做...

DT[, inc := .(Map(setdiff, listdata, listdata[1L]))]

#     exp sample listdata inc
# 1: exp1      1      2,5    
# 2: exp2      1  2,3,5,7 3,7
# 3: exp2      2    1,2,6 1,6

但我认为不使用列表列要好得多。


不使用列表列可能看起来像......

DT[, r := .I]
DT2 = DT[,c(.SD[rep(.I, lengths(listdata))], .(v = unlist(listdata))), .SDcols=!"listdata"]

#     exp sample r v
# 1: exp1      1 1 2
# 2: exp1      1 1 5
# 3: exp2      1 2 2
# 4: exp2      1 2 3
# 5: exp2      1 2 5
# 6: exp2      1 2 7
# 7: exp2      2 3 1
# 8: exp2      2 3 2
# 9: exp2      2 3 6

然后我们就可以使用这个数据集,并且可以做

DT2[!DT2[r==1L], on="v"]

#     exp sample r v
# 1: exp2      1 2 3
# 2: exp2      1 2 7
# 3: exp2      2 3 1
# 4: exp2      2 3 6
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

列表列中的设置操作 的相关文章

  • 如何优化 R 中的 sapply 来计算数据帧上的运行总计

    我在 R 中编写了一个函数来按月份计算累积总数 但随着数据集变大 我的方法的执行时间呈指数增长 我是一名 R 程序员新手 你能帮我提高效率吗 该函数以及我调用该函数的方式 accumulate lt function recordnum d
  • 创建序列组合

    我正在尝试解决以下问题 考虑 5 个简单序列 0 100 100 0 rep 0 101 rep 50 101 rep 100 101 我需要 3 个数字变量的集合 它们的所有组合都具有上述序列 由于有 5 个序列和 3 个变量 因此可以有
  • for 循环与 cor.test 在许多类别上

    我正在尝试在 R 中编写一个循环 它将循环遍历 3 个不同的物种 以计算两个连续变量 Redness 和 VarNormAbund 之间的相关性 我的循环正在运行 但 3 个物种中每一个的输出都是相同的 这让我认为循环卡在第一个物种上 co
  • Sql批量复制截断小数

    当我使用批量复制将十进制值从 C DataTable 插入 Sql Server 2005 时 值会被截断而不是四舍五入 DataTable 中的数据类型为 Decimal 数据库中的数据类型为Decimal 19 3 数据表中的值为 1
  • 使用 dplyr 的 select 引用变量名[重复]

    这个问题在这里已经有答案了 通常我会想要选择变量的子集 其中该子集是函数的结果 在这个简单的例子中 我首先获取与宽度特征相关的所有变量名称 library dplyr library magrittr data iris width var
  • 在 ggplot 中过滤管道 df

    我正在使用 dplyr 管道来清理我的 df 然后直接输入到 ggplot 中 但是 我只想一次只绘制一组 因此我需要过滤到该组 问题是 我希望比例保持不变 就好像所有群体都存在一样 是否可以在 ggplot 命令中进一步过滤管道 df 例
  • 在 R 中收集多组列[重复]

    这个问题在这里已经有答案了 我有一个宽数据框 需要将其收集或融化成一个高数据框 我遇到的问题是我有几组列需要保持关联 分组 我每个表单提交有 2 个用户 每个用户有 3 列数据 我想将这 6 列基本上以 3 组的形式堆叠起来 以便每个用户都
  • 求解非线性方程组

    我正在尝试求解以下四个方程组 我尝试过使用 rootSolve 包 但似乎我无法通过这种方式找到解决方案 我正在使用的代码如下 model lt function x F1 lt sqrt x 1 2 x 3 2 1 F2 lt sqrt
  • R - 如何为数据范围内的缺失值绘制条形图零点?

    假设我对 1 到 10 之间的整数的 200 个点有 10 个观察值 mysample sample rep seq 1 10 20 10 我想用条形图绘制它 barplot table mysample barplot https i s
  • dplyr:同一公式中全年每日值的总和以及特定每日值的总和

    Using df数据框 date lt rep as Date seq as Date 2003 01 01 as Date 2005 12 31 by 1 format Y m d 9 site lt c rep Site 1 3 109
  • 将数据框分成相等的部分

    我有一个示例数据框 df lt data frame x 1 112 y runif 112 有没有办法打印数据框列表 其中列表的第一部分包含行1 10 第二11 20等等 直到最后 111 112 你可以使用split with rep
  • R markdown PDF:为测验者暂时隐藏剧透代码

    我正在使用 R markdown 创建 PDF R 课程 我想插入一个如下所示的测验 output pdf document What is the class of the following R object 1 pi r class
  • 在 JSF 中动态创建表列

    我正在开发仪表板应用程序 我必须检索一组记录并显示在动态表框中 页框长度是固定的 现在可以初始化列和行 它应该看起来像这个示例 目前我正在使用数据表来显示 但它将所有数据打印在一列中 我如何将我的代码更改为上述模式
  • rollapply用于累积窗口[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我试图弄清楚如何在数据窗口上使用 R rollapply 该窗口从数据的开头累积扩展 在时间 t 滚动应用应使用 1 t
  • 循环 2 个列表,重复最短的列表,直到最长的列表结束 [重复]

    这个问题在这里已经有答案了 我确信有一种简单而明显的方法可以做到这一点 但我一直在谷歌搜索和阅读文档 但我找不到任何东西 这就是我想要实现的目标 la a1 a2 a3 a4 lb b1 b2 result a1 b1 a2 b2 a3 b
  • R 的 read.csv 在第一列名称前面加上垃圾文本[重复]

    这个问题在这里已经有答案了 我已将数据从 SQL Server Management Studio 中的结果网格导出到 csv 文件 csv 文件看起来正确 但是当我使用 read csv 将数据读入 R 数据帧时 第一个列名称前面带有 如
  • 如何在 R 中为所有plot.default、plot 或lines 调用设置默认颜色

    为了简化我的日常 R 交互 我想为所有绘图设置默认颜色 例如 假设我想要用红线绘制所有绘图 例如在 gnuplot 中 到目前为止 这是我的 Rprofile 的片段 setHook packageEvent grDevices onLoa
  • 如何在 R 中“推断”面板数据的值?

    我有一个带有 NA 值的面板数据 如下所示 uid year month day value 1 1 2016 8 1 NA 2 1 2016 8 2 NA 3 1 2016 8 3 30 4 1 2016 8 4 NA 5 1 2016
  • R:中断 for 循环

    你能确认下一个break是否取消了内部for循环吗 for out in 1 n old id velho lt old table df id out for in in 1 n id novo lt new table df ID in
  • 为什么在 data.frame 中预先指定类型会比较慢?

    我预先分配了一个大 data frame 以便稍后填写 我通常这样做NA是这样的 n lt 1e6 a lt data frame c1 1 n c2 NA c3 NA 我想知道如果我预先指定数据类型是否会让事情变得更快 所以我测试了 f1

随机推荐