R:展开序列,使序列中任何成员的值成为其位置,未填充的位置编码为0或NA
问题是: 我有一个数据集,其中评级者列出了他们认为是噪声而不是信号的成分。因此,如果总共有八个成分,他们可能会生成一个类似“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”替换缺少的值,这样:R:展开序列,使序列中任何成员的值成为其位置,未填充的位置编码为0或NA,r,R,问题是: 我有一个数据集,其中评级者列出了他们认为是噪声而不是信号的成分。因此,如果总共有八个成分,他们可能会生成一个类似“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时 我想知道是否
xmin <- 1
xmax <- 8
x <- c(3,5,6)
或
expand.x您只需创建一个NA
s的向量,然后使用[]
括号覆盖您感兴趣的值
> xmin = 1
> xmax = 8
> x = c(3,5,6)
> expand.x = xmin:xmax * NA
> expand.x[x] = x
> expand.x
[1] NA NA 3 NA 5 6 NA NA
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
> replace(xmin:xmax, -x, 0)
[1] 0 0 3 0 5 6 0 0
3)还是这个
> x[ match(xmin:xmax, x) ]
[1] NA NA 3 NA 5 6 NA NA
> replace(xmin:xmax, -x, 0)
[1] 0 0 3 0 5 6 0 0
如果我们将0
替换为NA
,则此解决方案给出与(2)相同的结果
编辑:添加第二种解决方案。您也可以使用0
而不是NA
。当他第一次问他使用的问题时,如果xmin
不是1,那么它可能不起作用,所以我试图与该格式保持一致。但是,是的,这可以很容易地成为0
和1
或TRUE
和FALSE
,等等。目前实际数据的形式是什么。它是一个列表
中的向量
s,在你的工作场所中是独立的向量吗?数据框的列中的值
?
> replace(xmin:xmax, -x, 0)
[1] 0 0 3 0 5 6 0 0