我想制作现有的矢量尺寸n
并使用NA
。我知道我可以像这样填充矢量的末尾:
v1 <- 1:10
v2 <- diff(v1)
length(v2) <- length(v1)
v2
# 1 1 1 1 1 1 1 1 1 NA
但我希望在初学时填充NA
而不是泛型方式。我的意思是这个特殊的例子我可以
v2 <- c(NA, diff(v1))
# NA 1 1 1 1 1 1 1 1 1
但是我希望有一些基本的R函数或库提供像v2 <- pad(v2, n=length(v1), value=NA)
有什么类似的东西我可以使用自我或我需要定义自己的功能:
pad <- function(x, n) { # ugly function that doesn't keep the attributes of x
len.diff <- n - length(x)
c(rep(NA, len.diff), x)
}
pad(1:10, 12) # NA NA 1 2 3 4 5 6 7 8 9 10
答案 0 :(得分:5)
Box1:<br>
<select name="country" class="field-select">
<option value="selected">Options</option>
<option value="Color">Color</option>
<option value="Food">Food</option>
</select>
Box2:<br>
<select name="item" class="field-select">
<option value="Red">Red</option>
<option value="Orange">Orange</option>
<option value="Yellow">Yellow</option>
<option value="Apple">Apple</option>
<option value="Banana">Banana</option>
<option value="Watermelon">Watermelon</option>
</select>
中的一个选项diff
也有zoo
na.pad
答案 1 :(得分:4)
假设class Foo {
func bar() -> () {
let bundle = Bundle(for: type(of: self))
// ...
}
}
具有所需长度且v1
更短(或相同长度),则这些左边的v2
个v2
值NA
的长度为v1
}。前四个假设数字向量,尽管可以通过将NA*v1
中的rep(NA, length(v1))
替换为replace(NA * v1, seq(to = length(v1), length = length(v2)), v2)
rev(replace(NA * v1, seq_along(v2), rev(v2)))
replace(NA * v1, seq_along(v2) + length(v1) - length(v2), v2)
tail(c(NA * v1, v2), length(v1))
c(rep(NA, length(v1) - length(v2)), v2)
来修改它们以进行更广泛的工作。
v1
第四是最短的。除了NA
乘以rev
值之外,前两个和第四个不涉及任何显式算术计算。第二个可能很慢,因为它涉及两个{{1}}的应用程序。
答案 2 :(得分:0)
将nrValues定义为您可以使用的v2开头所需的元素数量:
n <- length(v1)
v2 <- c(rep(NA,nrValues),v1[nrValues:n])
我不熟悉这样做的功能,所以如果你打算多次这样做,我会创建你自己的功能。