我有一个代表聚集数据的数据框列表。
[[1]]
x y r.value g.value b.value
5 99 56 0.9176471 0.4941176 0.007843137
8 192 136 0.8352941 0.6313725 0.000000000
10 261 64 0.8588235 0.7254902 0.000000000
12 355 379 0.5098039 0.2588235 0.078431373
[[2]]
x y r.value g.value b.value
2 44 325 0.9960784 0.7254902 0.11764706
3 52 65 0.9960784 0.7333333 0.37647059
9 211 25 0.8078431 0.6823529 0.59215686
14 374 281 0.5882353 0.1882353 0.09019608
[[3]]
x y r.value g.value b.value
1 25 68 0.9960784 0.7372549 0.36862745
7 191 398 0.9529412 0.7411765 0.07058824
11 338 125 0.9843137 0.8431373 0.02745098
15 492 395 0.9764706 0.7411765 0.00000000
[[4]]
x y r.value g.value b.value
4 99 250 0.9882353 0.8823529 0.4392157
6 133 252 0.9960784 0.9450980 0.6705882
13 362 372 0.8941176 0.8549020 0.6117647
我想使用一个包装函数,比如lapply
将列表中每个数据帧的索引附加到每个数据帧的末尾。我希望输出看起来像:
[[1]]
x y r.value g.value b.value cluster
5 99 56 0.9176471 0.4941176 0.007843137 1
8 192 136 0.8352941 0.6313725 0.000000000 1
10 261 64 0.8588235 0.7254902 0.000000000 1
12 355 379 0.5098039 0.2588235 0.078431373 1
[[2]]
x y r.value g.value b.value cluster
2 44 325 0.9960784 0.7254902 0.11764706 2
3 52 65 0.9960784 0.7333333 0.37647059 2
9 211 25 0.8078431 0.6823529 0.59215686 2
14 374 281 0.5882353 0.1882353 0.09019608 2
[[3]]
x y r.value g.value b.value cluster
1 25 68 0.9960784 0.7372549 0.36862745 3
7 191 398 0.9529412 0.7411765 0.07058824 3
11 338 125 0.9843137 0.8431373 0.02745098 3
15 492 395 0.9764706 0.7411765 0.00000000 3
[[4]]
x y r.value g.value b.value cluster
4 99 250 0.9882353 0.8823529 0.4392157 4
6 133 252 0.9960784 0.9450980 0.6705882 4
13 362 372 0.8941176 0.8549020 0.6117647 4
我已经尝试过lapply(clusters, function(x) cbind(x,cluster= 1))
,但当然只将值 1 附加到每个数据帧,而不是值 1、2、3、4。我也尝试过lapply(clusters, function(x) {i=1:4; cbind(x,cluster= i)})
我在另一个 stackoverflow 页面上看到的建议,但收到了错误:
Error in data.frame(..., check.names = FALSE) :
arguments imply differing number of rows: 3, 4
任何帮助将非常感激。