【发布时间】:2020-03-14 20:46:46
【问题描述】:
我正在尝试为来自名称列表的列表中的每个data.table 设置一个属性,如下所示:
DT = data.table(
ID = c("b","b","b","a","a","c"),
a = 1:6,
b = 7:12,
c = 13:18
)
DT <- list(DT, DT, DT)
names <- c("NAME1", "NAME2", "NAME3")
sapply(DT, function(x) setattr(x, "name", names))
attr(DT[[1]], "name")
# [1] "NAME1" "NAME2" "NAME3"
sapply(DT, function(x, y) setattr(x, "name", y), names)
attr(DT[[1]], "name")
# [1] "NAME1" "NAME2" "NAME3"
但是可以看出,分配给列表中每个data.table的是整个名称列表。
是否有 FP 方法来实现这一点?我怎么能做类似于 scala 中的事情:
zip(DT, names)
然后对每一对进行操作?我试过这个,没有运气:
sapply(list(DT, names), function(x) setattr(x[[1]], "name", x[[2]]))
另外,我觉得sapply 不是在这里使用的正确函数。
预期输出
attr(DT[[1]], "name") # NAME1
attr(DT[[2]], "name") # NAME2
attr(DT[[3]], "name") # NAME3
【问题讨论】:
-
预期输出是什么?
-
您只是想为您的列表指定名称?
-
@RonakShah,对于列表的每个元素,似乎我把它复杂化了。
标签: r scala functional-programming data.table