我正在尝试使用分层标准对数据框列表执行计算。 IE优选地使用标准1,但如果不是,则标准2是好的。如果数据框不满足,则转到标准3等。
我想返回3个36个观察列表(在我的数据框中为nrow)&按我的标准过滤。但是,类别1或类别2都没有返回36个观察结果。这是为什么?
这是一个可重复的例子:
int sqrt_n = sqrt(n);
#pragma omp parallel for schedule(static, chunksize) num_threads(16)
for (int i = 2; i < sqrt_n; i++) {
if(array[i] != 0){
#pragma omp atomic write
//printf("%d ", i);
}
for (int j=i*i;j<n;i++){
#pragma omp atomic write
array[j] = 1;
}
}
#pragma omp parallel for schedule(static, chunksize) num_threads(16)
for(int i = sqrt_n+1; i < n; i++){
if(!array[i]){
#pragma omp atomic write
//printf("%d ", i);
}
}
提前感谢您提供的任何帮助和建议。
编辑:我设法解决了这个问题。 'Category x '旁边的[i]的位置是错误的。此外,不需要使用多个类别。#dummy data
d1 <- data.frame(a=rnorm(6), b=1:6, c=rnorm(6), d = rnorm(6), e = rnorm(6))
d2 <- data.frame(a=1:6, b=rnorm(6), c =rnorm(6), d = rnorm(6), e = rep(NA,
times = 6))
d3 <- data.frame(a=1:6, b=rnorm(6), c= rnorm(1:6), d = rep(NA, times = 6), e
= rnorm(6))
d4 <- data.frame(a=1:6, b=rnorm(6), c =rnorm(6), d = rnorm(6), e = rep(NA,
times = 6))
d5 <- data.frame(a=rnorm(6), b=1:6, c=rnorm(6), d = rep(NA, times = 6), e =
rnorm(6))
d6 <- data.frame(a=rnorm(6), b=1:6, c=rnorm(6), d = rep(NA, times = 6), e =
rep(NA, times = 6))
my_test_data <- list(d1, d2, d3, d4, d5, d6)
test_data_rows <- rbind.fill(my_test_data)
#seperate into categories
Category1 <- list()
Category2 <- list()
Category3 <- list()
for (i in 1:NROW(test_data_rows)) {
if (!is.na(test_data_rows$e[i] == TRUE)) {
Category1[i] <- test_data_rows$e[i]*test_data_rows$c[i]*(test_data_rows$b[i]
/ test_data_rows$a[i])
} else if (!is.na(test_data_rows$d[i] == TRUE) & is.na(test_data_rows$e[i])
== TRUE) {
Category2[i] <- (0.432 * test_data_rows$d[i] * (test_data_rows$b[i] /
test_data_rows$a[i]))
} else if (is.na(test_data_rows$d[i] == TRUE) & is.na(test_data_rows$e[i] ==
TRUE)) {
Category3[i] <- (0.101 * 0.432*(test_data_rows$b[i] / test_data_rows$a[i]))
}
}
答案 0 :(得分:3)
VICTORY!我设法解决了这个问题。 [i]在“分类”&#39;旁边的位置错了。此外,无需使用多个类别。
for (i in 1:NROW(test_data_rows)) {
if (!is.na(test_data_rows$e[i] == TRUE)) {
Category1[i] <- test_data_rows$e[i]*test_data_rows$c[i]*(test_data_rows$b[i]
/ test_data_rows$a[i])
} else if (!is.na(test_data_rows$d[i] == TRUE) & is.na(test_data_rows$e[i])
== TRUE) {
Category1[i] <- (0.432 * test_data_rows$d[i] * (test_data_rows$b[i] /
test_data_rows$a[i]))
} else if (is.na(test_data_rows$d[i] == TRUE) & is.na(test_data_rows$e[i] ==
TRUE)) {
Category1[i] <- (0.101 * 0.432*(test_data_rows$b[i] / test_data_rows$a[i]))
}
}