用三个不同的值填充数据框

Filling in a data frame with three different values

所以我正在开发一个使用嵌套循环的项目,因为这是首选方法。我为下面的最终数据框附上了所需的(压缩的)输出。

    1   2   3   4   5   6   7
1   a   NA  c   NA  e   NA  g
2   NA  1   NA  3   NA  5   NA
3   a   NA  c   NA  e   NA  g
4   NA  1   NA  3   NA  5   NA
5   a   NA  c   NA  e   NA  g
6   NA  1   NA  3   NA  5   NA
7   a   NA  c   NA  e   NA  g
8   NA  1   NA  3   NA  5   NA
9   a   NA  c   NA  e   NA  g
10  NA  1   NA  3   NA  5   NA
11  a   NA  c   NA  e   NA  g
12  NA  1   NA  3   NA  5   NA
13  a   NA  c   NA  e   NA  g
14  NA  1   NA  3   NA  5   NA
15  a   NA  c   NA  e   NA  g
16  NA  1   NA  3   NA  5   NA

我已经将字母放入了交替行的框架中,但我对如何使用代码将数字和 NA 放入框架中并获得我想要的输出感到困惑。这是我的。

Project = matrix(nrow=100, ncol=26)
for (i in 1:nrow(Project)) {
  if (i %% 2 == 1) {
    Project[i, ] <- letters
  } 
}  

我现在需要插入这些数字并获得我想要的输出,但我对继续使用什么代码一无所知。提醒一下,这必须使用嵌套循环来完成。

或者您使用已经存在的 NA 定义矩阵:

# letters to fill, where every even index is NA
fill_letters <- letters
fill_letters[seq(2, 26, by = 2)] <- NA

# numbers to fill, where every even index is NA
fill_numbers <- 0:25
fill_numbers[seq(1, 25, by = 2)] <- NA

matrix(
  data = c(fill_letters, fill_numbers), 
  nrow = 100, 
  ncol = 26, 
  byrow = TRUE
)

或者您已经给出了填充矩阵,然后通过索引矩阵将 NA 放置到位:

mat_result <- matrix(
  data = c(letters, 0:25), 
  nrow = 100, 
  ncol = 26, 
  byrow = TRUE
) 

mat_index <- matrix(
  data = c(rep_len(c(FALSE, TRUE), length.out = ncol(mat_result)), 
           rep_len(c(TRUE, FALSE), length.out = ncol(mat_result))),
  nrow = 100,
  ncol = 26,
  byrow = TRUE
)

mat_result[mat_index] <- NA