在R中存储多维索引和相应值的最佳方法

时间:2017-09-14 12:19:47

标签: r list dataframe

我有3个维度的索引列表;

> head(TW_idx, n = 4)
[[1]]
[1]   1   1 135

[[2]]
[1]  1  2 96

[[3]]
[1]   1   3 120

[[4]]
[1]   1   1 135

每个索引对应一个值100.但是,一个索引可以在 TW_idx 中出现一次以上(此处在列表1和列4中),并且对于索引的每次出现,值都会增加线性地(因此,如果一个索引存在3次,则该索引的值为300)。我想找到一种方法来存储索引及其相应的值。

我的想法是,我们创建的数据框看起来像是

> df
 idx    value
1,1,135  200
1,2,96   100
1,3,120  100

对于上面的4个值,但我不确定如何创建它。更好的是,如果我能得到一个输出,其中索引只是没有重复的相同列表(即TW_idx< - unique(TW_idx)),并且值存储在每个元素描述的相同长度的列表/数字列表中新的(没有重复的)TW_idx列表中相应元素的值。但是如果获得数据帧更简单,我会对此非常满意。

提前致谢

1 个答案:

答案 0 :(得分:5)

这够了吗?基本上我从每个列表元素创建一个字符变量。假设它们一直被记录下来。计算每种组合发生的次数是微不足道的。现在结果是原始计数,但实际上并没有什么能阻止你将它乘以100。

python -c 'import base64, sys, json; img = base64.b64encode(open(sys.argv[1], "rb").read()); print json.dumps({"images_bytes": {"b64": img}})' example_img.jpg &> request.json

如果您需要列表形式的数据,可以按行分割。

x <- list(c(1, 1, 135),
         c(1, 2, 96),
         c(1, 3, 120),
         c(1, 1, 135))

out <- as.data.frame(table(sapply(x, FUN = paste, collapse = ",")))
out

     Var1 Freq
1 1,1,135    2
2  1,2,96    1
3 1,3,120    1