我有5个向量的列表。 该列表称为VECT。这5个向量称为VA,VB,VC,VD,VE。 我创建了一个循环以迭代方式添加向量,从而获得VA + VA,VA + VB,VA + VC,VA + VD,VA + VE,VB + VA,VB + VB ... 我想插入一行代码,以便不仅在控制台下产生的向量(已经完成),而且它们也被命名。如“ VA + VA”,“ VA + VB”等。 我怎么这样命名?非常感谢!
答案 0 :(得分:2)
VECT <- c("VA", "VB", "VC")
setNames(nm = c(outer(VECT, VECT, paste, sep = "+")))
# VA+VA VB+VA VC+VA VA+VB VB+VB VC+VB VA+VC VB+VC VC+VC
# "VA+VA" "VB+VA" "VC+VA" "VA+VB" "VB+VB" "VC+VB" "VA+VC" "VB+VC" "VC+VC"
说明:
outer
做一个“外部乘积”:它在两个向量的每对上运行函数(第3个参数)。在这种情况下,它实际上与
for (nm1 in VECT) {
for (nm2 in VECT) {
paste(nm1, nm2, sep = "+")
}
}
(并将其存储在向量中)
c(...)
:outer
返回一个矩阵(自己尝试!),因此c(outer(...))`只是将其展开为单个向量。
setNames(nm = ...)
获取一个向量,并根据其值对其进行命名。典型用法是setNames(object = vec, nm = vecnames)
,它等效于names(vec) <- vecnames
,但是如果缺少object
,则默认为自命名。
如果此处的订单至关重要,则可以随时对其进行排序:
sort(setNames(nm = c(outer(VECT, VECT, paste, sep = "+"))))
# VA+VA VA+VB VA+VC VB+VA VB+VB VB+VC VC+VA VC+VB VC+VC
# "VA+VA" "VA+VB" "VA+VC" "VB+VA" "VB+VB" "VB+VC" "VC+VA" "VC+VB" "VC+VC"