如何在 R 中初始化一个固定长度的向量?
例如,我想要一个长度为 10?? 的字符向量。
最佳答案
你问这个问题很好,因为在将结果分配给长对象的 for 循环之前预先分配长向量通过不需要连续延长向量而变得更有效。
?vector
X <- vector(mode="character", length=10)
这将为您提供打印为两个相邻双引号的空字符串,但请注意值本身中没有双引号字符。这只是 print.default
的副作用显示值。它们可以按位置索引。字符数不会受到限制,因此如果您期望获得 10 个字符元素,您会感到失望。> X[5] <- "character element in 5th position"
> X
[1] "" ""
[3] "" ""
[5] "character element in 5th position" ""
[7] "" ""
[9] "" ""
> nchar(X)
[1] 0 0 0 0 33 0 0 0 0 0
> length(X)
[1] 10
从技术上讲,列表是 R 中的“向量”,因此这是使用 for 循环构建列表的推荐(甚至必要)实践:obj <- list( length(inp_vec) )
for ( i in seq_along(inp_vec) ){
obj[[i]] <- some_func( inp_vec[i] )
}
@Tom 提醒我们,'mode' 的默认设置是合乎逻辑的,并且 R 有一组相当丰富的自动强制转换方法,尽管我发现他的建议 vector(,10)
不如 logical(10)
清楚这是它的等价物。
关于r - 如何在R中初始化固定长度的向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22104774/