用三个不同的值填充数据框
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
所以我正在开发一个使用嵌套循环的项目,因为这是首选方法。我为下面的最终数据框附上了所需的(压缩的)输出。
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