2017-01-10 78 views
0

不同长度的矢量我有一个函数:乘以R中

v0 <- function(n) { 
    seq(1:n) 
} 

,我需要创建一个函数v1这给这样的结果:

(1 2 3 -4 -5 -6 7 8 9 -10)   # if n <- 10 or 
(1 2 3 -4 -5 -6 7 8 9 -10 -11 -12 13) # if n <- 13 

但我不断收到时的警告消息我这样做:

v1 <- function(n) { 
    seq(1:n) * c(1,1,1,-1,-1,-1) 
} 

什么是正确的方式去做这个任何提示?

回答

0

V0(10)是长度为10的阵列,而c(1,1,1,-1,-1,-1)具有长度为6

您得到警告(“较长物体长度不短对象长度的倍数”)是因为6不划分10

当你做v0(10) * c(1,1,1,-1,-1,-1)时,R重复第二个数组多次,以创建一个长度与v0(10)相同的数组。 如何?像这样:

v0(10) * c(1,1,1,-1,-1,-1,1,1,1,-1) 

如果这不是希望获取,然后或者正确v0(10),第二阵列,或创建在其中定义这两个阵列之间的正确操作的功能的结果。

+0

感谢您的帮助更多信息!我明白你的意思了!如果我对我的问题不清楚,我很抱歉,但这正是我无法做到的功能部分。如果你能提供你的帮助,会非常感激。 –

0

你可以做这样的事情,

v1 <- function(n){ 
    t <- seq(1:n) 
    t[c(rep(FALSE, 3), rep(TRUE, 3))] <- t[c(rep(FALSE, 3), rep(TRUE, 3))] * (-1) 
    return(t) 
    } 

v1(10) 
# [1] 1 2 3 -4 -5 -6 7 8 9 -10 

也有读at this有关警告