如何在R中生成包含NA值的序列?

时间:2015-03-20 04:36:11

标签: r heatmap na seq gplots

我想知道如何生成从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值生成我自己的标签序列以避免这种重叠。

欢迎任何建议:)

2 个答案:

答案 0 :(得分:5)

试试这个:

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

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

答案 1 :(得分: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