gpt4 book ai didi

r - 整数列和列表列中的整数值之间的差异

转载 作者:行者123 更新时间:2023-12-02 09:13:45 26 4
gpt4 key购买 nike

假设有一个 data.table 如下:

exp <- structure(list(
id = c("a", "b"),
num1 = c(1L, 5L),
num2 = list(c(2L, 5L, 8L),
c(6L, 10L, 13L, 19L))),
.Names = c("id", "num1", "num2"),
row.names = c(NA, -2L),
class = c("data.table", "data.frame"))

查看数据表:

exp
id num1 num2
1: a 1 2,5,8
2: b 5 6,10,13,19

另请参阅结构:

str(exp)
Classes ‘data.table’ and 'data.frame': 2 obs. of 3 variables:
$ id : chr "a" "b"
$ num1: int 1 5
$ num2:List of 2
..$ : int 2 5 8
..$ : int 6 10 13 19

我的问题是如何创建一个附加列(例如 diff),它将显示 num1(整数)和 num2(包含整数的列表)列之间的差异。对于第一行,它应该显示1, 4, 7,对于第二行,它应该显示1, 5, 8, 14

下面的代码显然不起作用:

exp[, `:=`(diff = num1 - num2)]

也没有

exp[, `:=`(diff = num1 - unlist(num2))]

任何帮助将不胜感激。

最佳答案

这可以使用 map 来完成:

exp[, diff := Map("-", num2, num1)]
exp
# id num1 num2 diff
#1: a 1 2,5,8 1,4,7
#2: b 5 6,10,13,19 1, 5, 8,14

num1 值被回收到 num2 列表元素的长度,然后减去。 Map 始终返回列表结果。

关于r - 整数列和列表列中的整数值之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49167776/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com