问题:
我有一个数据集,其中评估者列出了他们认为是噪声而不是信号的组件。因此,如果总共有八个分量,他们可能会生成一个类似“3,5,6”的列表,表明他们认为第三、第五和第六个分量是噪声,应该从进一步分析中排除。
为了便于我对评估者间可靠性的分析,我需要能够排列由不同评估者创建的向量,并查看一致的地方;所以,虽然 "3,5,6"和 "3,6"没有可比性,但类似 "0,0,3,0,5,6,0,0"和 "0,0,3,0,0",6,0,0"将是,尤其是当我将所有非零值转换为 1 时。
我想知道是否有办法将序列从指定的最小值扩展到指定的最大值,用“0”或“NA”替换缺失值,这样给出:
xmin <- 1
xmax <- 8
x <- c(3,5,6)
我可以产生类似的东西:
expand.x <- c(NA,NA,3,NA,5,6,NA,NA)
sequence
命令与我想要的有一些相似之处,但并不完全相同。就我而言,没有必要实际保留原始向量中的值,因此
expand.x <- c(0,0,1,0,1,1,0,0)
或者
expand.x <- c(FALSE,FALSE,TRUE,FALSE,TRUE,TRUE,FALSE,FALSE)
对我来说也同样有效,因为在这种格式中,位置数据概括了列表中的原始数值。我觉得这应该很简单,但我什至不确定从哪里开始解决这个问题。我怀疑某种比较给定向量的方法
c(3,5,6)
对抗全序列seq(xmin:xmax)
将是关键,但...没有想法。谢谢!
最佳答案
1) 尝试这个:
> xmin:xmax %in% x
[1] FALSE FALSE TRUE FALSE TRUE TRUE FALSE FALSE
2) 或这个
> x[ match(xmin:xmax, x) ]
[1] NA NA 3 NA 5 6 NA NA
3) 或这个
> replace(xmin:xmax, -x, 0)
[1] 0 0 3 0 5 6 0 0
如果我们替换
0
与 NA
那么这个解决方案给出与(2)相同的结果。编辑:添加了第二个解决方案。
关于R:扩展一个序列,使得序列中任何成员的值成为它的位置,未填充的位置编码为 0 或 NA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20411581/