【发布时间】:2019-03-09 00:07:15
【问题描述】:
我正在尝试编写一个条件语句,该语句将检查向量中的任何值是否满足条件,然后根据该条件写入结果。在下面的示例中,我知道 c2 的总和远小于其他列,但在我的实际数据中,我不知道哪一列的总和更小。我想检查 csums 向量中的任何值是否小于 0.1,如果是,则将列索引写入数据框。此外,在某些情况下,会有两列低于 0.1,因此我需要将两列索引都写入数据框。
c1 <- runif(16,.3,.6)
c2 <- c(.01,.01,.01,.01,rep(.00,12))
c3 <- runif(16,.3,.6)
c4 <- runif(16,.3,.6)
c5 <- runif(16,.3,.6)
test.mat1 <- cbind(c1,c2,c3,c4,c5)
csums1 <- colSums(test.mat1)
csums1
c1 c2 c3 c4 c5
7.279773 0.040000 6.986803 7.200409 6.867637
c6 <- runif(16,.3,.6)
c7 <- runif(16,.3,.6)
c8 <- c(.01,.01,.01,.01,rep(.00,12))
c9 <- c(.01,.01,.01,.01,rep(.00,12))
c10 <- runif(16,.3,.6)
test.mat2 <- cbind(c6,c7,c8,c9,c10)
csums2 <- colSums(test.mat2)
csums2
c6 c7 c8 c9 c10
7.198180 7.449324 0.040000 0.040000 8.172110
结果示例如下所示:
result <- matrix(c(2,0,3,4),nrow=2,byrow=T)
result
[,1] [,2]
[1,] 2 0
[2,] 3 4
第 1 行记录第 2 列的总和小于 0.1,第 2 行记录列表中下一个数据框中的第 3 列和第 4 列的总和小于 0.1。我的实际数据是一个包含几千个数据框的列表,结果数据框继续我的列表的总长度。我计划将此条件语句嵌入到循环中以遍历每个列表元素。
【问题讨论】:
-
你需要的主要是
which(csums<0.1)。我会在一分钟内发布完整的答案。 -
调用 RNG 时,您应该调用
set.seed()来启动脚本。
标签: r conditional