getTargetFrequency function
Implementation
List<int> getTargetFrequency(WidgetRef ref) {
String stdout = ref.watch(stdoutProvider);
final randomPartition = ref.watch(partitionProvider);
try {
// Extract frequencies of target variable classes from R output.
// If randomPartition is true, calculate floor of frequencies scaled by DATA_SPLIT_TR_TU_TE.
String defineTarget = rExtract(
stdout,
randomPartition
? ' floor(as.numeric(table(ds[[target]])) * split[1])'
: ' as.numeric(table(ds[[target]]))',
);
// Remove [1] prefix if present.
defineTarget = defineTarget.replaceAll(RegExp(r'^\[1\]\s*'), '');
// Split string into numbers and convert to integers.
List<int> frequencies = defineTarget
.trim()
.split(RegExp(r'\s+'))
.map((s) => int.tryParse(s) ?? 0)
.toList();
return frequencies.length == 2 ? frequencies : [0, 0];
} catch (e) {
return [0, 0]; // Return default on error.
}
}