在 R 中如何创建和附加“命名”向量。我当前的方法是创建单独的名称向量并稍后分配名称。
v = c()
vName = c()
for (i in 1:5) {
# do something complicated and store output
k = i*i ## or get output from any other function
v = c(v,k)
vName = c(vName, k)
}
names(v) = vName
Run Code Online (Sandbox Code Playgroud)
有更好的方法吗?
在一些简单的情况下,您可以使用setNames:
setNames(1:5, letters[1:5])
Run Code Online (Sandbox Code Playgroud)
但在循环之外应用名称是一个好方法。如果预先分配向量,则可以在循环中添加名称:
# pre-allocate vectors of known size (length of for loop)
v=numeric(5)
vName = character(5)
for (i in 1:5) {
# do something complicated and store output
k = i*i ## or get output from any other function
kName = <something related to k>
v[i] = k
vName[i] = kName
}
Run Code Online (Sandbox Code Playgroud)
预分配向量,在内存中设置一个固定位置,并在循环中填充该固定位置。如果重复附加到它们,R 必须在每次迭代中复制向量。