问题:
我有一个数据集,其中评估者列出了他们认为是噪声而不是信号的组件.因此,如果总共有八个组件,他们可能会生成一个类似"3,5,6"的列表,表明他们认为第三,第五和第六个组件是噪音,应该从进一步分析中排除.
为了便于我对interrater可靠性的分析,我需要能够对不同评估者创建的向量进行排列,并查看协议的位置; 所以,虽然"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)
Run Code Online (Sandbox Code Playgroud)
我可以产生类似的东西:
expand.x <- c(NA,NA,3,NA,5,6,NA,NA)
Run Code Online (Sandbox Code Playgroud)
该sequence命令与我想要的有一些相似之处,但并不完全相同.
就我的目的而言,没有必要实际保留原始向量中的值,所以
expand.x <- c(0,0,1,0,1,1,0,0)
Run Code Online (Sandbox Code Playgroud)
要么
expand.x <- c(FALSE,FALSE,TRUE,FALSE,TRUE,TRUE,FALSE,FALSE)
Run Code Online (Sandbox Code Playgroud)
对我来说同样适用,因为在这种格式中,位置数据概括了列表中的原始数值.我觉得这应该很简单,但我不确定从哪里开始解决这个问题.我怀疑将给定的矢量c(3,5,6)与完整序列进行比较的某种方式seq(xmin:xmax)是关键但是......没有想法.谢谢!
1)试试这个:
> xmin:xmax %in% x
[1] FALSE FALSE TRUE FALSE TRUE TRUE FALSE FALSE
Run Code Online (Sandbox Code Playgroud)
2)或者这个
> x[ match(xmin:xmax, x) ]
[1] NA NA 3 NA 5 6 NA NA
Run Code Online (Sandbox Code Playgroud)
3)或者这个
> replace(xmin:xmax, -x, 0)
[1] 0 0 3 0 5 6 0 0
Run Code Online (Sandbox Code Playgroud)
如果我们替换0为NA那么该解决方案给出与(2)相同的结果.
编辑:添加第二个解决方案.