R 为什么我的清单不起作用

R 为什么我的清单不起作用,r,R,我有一个函数,可以检查我的列表。我有一个有两个向量的列表。我没有重复我的代码,而是尝试使用for循环。但是,for循环没有按预期工作 这是我的密码: x <- c(2,3,4,5) y <- c(2,4,6,7) z <- list(x,y) pscale <- numeric() pscale <- list() for(i in 1:4){#length of my vector for(j in 1:2){#length of z pscale

我有一个函数,可以检查我的列表。我有一个有两个向量的列表。我没有重复我的代码,而是尝试使用
for
循环。但是,for循环没有按预期工作

这是我的密码:

 x <- c(2,3,4,5)
 y <- c(2,4,6,7)
 z <- list(x,y)
 pscale <- numeric()
 pscale <- list()
 for(i in 1:4){#length of my vector
 for(j in 1:2){#length of z
 pscale[[j]][[i]] <- ifelse(z[[j]][[i]] %in% c(2,9,10),0.01,1)
 }
 }
Error in `*tmp*`[[j]] : subscript out of bounds

x我建议将
pscale
声明为矩阵:

x <- c(2,3,4,5)
y <- c(2,4,6,7)
z <- list(x,y)
pscale <- matrix(rep(NA,length(x)*length(z)), length(z), length(x))
for(i in 1:4) {
 for(j in 1:2) {
   pscale[j,i] <- ifelse(z[[j]][[i]] %in% c(2,9,10), 0.01, 1)
 }
}
pscale

#      [,1] [,2] [,3] [,4]
# [1,] 0.01    1    1    1
# [2,] 0.01    1    1    1

我建议将
pscale
声明为矩阵:

x <- c(2,3,4,5)
y <- c(2,4,6,7)
z <- list(x,y)
pscale <- matrix(rep(NA,length(x)*length(z)), length(z), length(x))
for(i in 1:4) {
 for(j in 1:2) {
   pscale[j,i] <- ifelse(z[[j]][[i]] %in% c(2,9,10), 0.01, 1)
 }
}
pscale

#      [,1] [,2] [,3] [,4]
# [1,] 0.01    1    1    1
# [2,] 0.01    1    1    1
这应该行得通

x <- c(2,3,4,5)
y <- c(2,4,6,7)
z <- list(x,y)
pscale <- list()
length(pscale) <- 2 # set length to the number of vectors
for(i in 1:4){#length of my vector
  for(j in 1:2){#length of z
    pscale[[j]][i] <- ifelse(z[[j]][i] %in% c(2,9,10),0.01,1)
  }
}
x这应该行得通

x <- c(2,3,4,5)
y <- c(2,4,6,7)
z <- list(x,y)
pscale <- list()
length(pscale) <- 2 # set length to the number of vectors
for(i in 1:4){#length of my vector
  for(j in 1:2){#length of z
    pscale[[j]][i] <- ifelse(z[[j]][i] %in% c(2,9,10),0.01,1)
  }
}

x我有很多向量,需要函数自动工作。我编辑了我的答案。若你们知道你们的向量数,那个么设置列表的长度。我有很多向量,需要这个函数自动工作。我编辑了我的答案。如果您知道向量的数量,那么请设置列表的长度。请您解释一下
2
vector(2,…)
中的含义。是我的向量数吗?@Alice是的,
2
是向量数:
x
y
。你可以使用
vector(length(z),mode=“list”)
。你能解释一下
vector(2,…)中
2
的意思吗。是我的向量数吗?@Alice是的,
2
是向量数:
x
y
。您可以使用
向量(长度(z),mode=“list”)