2

我想知道如何生成一个从 0 到 100 的自动化序列,每个数字只有 5 个位置,其余的应该是 NA 值。最后我想要这样的东西:

> labCol
[1]  0 NA NA NA NA  5 NA NA NA NA 10 NA NA NA NA 15 NA  .....  100

我已经像这样手动完成了这个示例,但它很耗时:

labCol <- c(0, NA, NA, NA, NA, 5, NA, NA, NA, NA, 10, NA, NA, NA, NA, 15, NA, ... 100 )

seq()我在函数中找不到执行此操作的选项。

这个问题是因为我在用包的功能做热图,heatmap.2()gplots标签太近看不懂。我也不能每 5 或 10 个位置设置标签。这就是为什么我需要生成我自己的带有 NA 值的标签序列以避免这种重叠。

欢迎任何建议:)

4

2 回答 2

6

试试这个:

labCol <- seq(0, 100, 1)
labCol[labCol %% 5 != 0] <- NA

这会生成一个从 0 到 100 的序列,然后将所有不能被 5 整除的序列值设置为NA

于 2015-03-20T04:39:32.343 回答
1

您还可以创建一个NA向量,然后填充元素

 labCol <- rep(NA,100)
 labCol[seq(1,101, 5)] <- seq(0,100,5)
 labCol
 #[1]   0  NA  NA  NA  NA   5  NA  NA  NA  NA  10  NA  NA  NA  NA  15  NA  NA
 #[19]  NA  NA  20  NA  NA  NA  NA  25  NA  NA  NA  NA  30  NA  NA  NA  NA  35
 #[37]  NA  NA  NA  NA  40  NA  NA  NA  NA  45  NA  NA  NA  NA  50  NA  NA  NA
 #[55]  NA  55  NA  NA  NA  NA  60  NA  NA  NA  NA  65  NA  NA  NA  NA  70  NA
 #[73]  NA  NA  NA  75  NA  NA  NA  NA  80  NA  NA  NA  NA  85  NA  NA  NA  NA
 #[91]  90  NA  NA  NA  NA  95  NA  NA  NA  NA 100
于 2015-03-20T07:09:15.467 回答