我编写了一些用于组织以不同频率采样的数据的代码,但是我广泛使用了for循环,当数据集很大时,这会大大降低代码的操作速度.我一直在浏览我的代码,找到删除for循环以加快速度的方法,但其中一个循环让我感到难过.
举个例子,假设数据是以3Hz采样的,所以每秒数据都会得到三行.但是,变量A,B和C各自以1Hz采样,因此每三行我将获得一个值.在一秒周期内连续采样变量,导致数据的对角性质.
更复杂的是,有时在原始数据集中会丢失一行.
我的目标是:确定了我希望保留的行后,我想将后续行中的非NA值移动到守护者行中.如果它不是丢失的数据问题,我将始终保持行包含第一个变量的值,但如果其中一行丢失,我将保留下一行.
在下面的示例中,第六个样本和第十个样本丢失.
A <- c(1, NA, NA, 4, NA, 7, NA, NA, NA, NA)
B <- c(NA, 2, NA, NA, 5, NA, 8, NA, 11, NA)
C <- c(NA, NA, 3, NA, NA, NA, NA, 9, NA, 12)
test_df <- data.frame(A = A, B = B, C = C)
test_df
A B C
1 1 NA NA
2 NA 2 NA
3 NA NA 3
4 4 NA NA
5 NA 5 NA
6 7 NA NA …Run Code Online (Sandbox Code Playgroud) 我是 C# 和面向对象编程的新手。我一直在尝试在我的 GUI 中实现一个“取消”按钮,以便用户可以在过程中停止它。
我读过这个问题:如何实现停止/取消按钮?并确定 backgroundWorker 对我来说应该是一个不错的选择,但是给出的示例没有解释如何将参数传递给 backgroundWorker。
我的问题是我不知道如何将参数传递给 backgroundWorker 以使其停止进程;我只能让 backgroundWorker 停止自己。
我创建了以下代码来尝试了解这一点,其中我的表单有两个按钮(buttonStart 和 buttonStop)和一个 backgroundWorker(backgroundWorkerStopCheck):
using System;
using System.ComponentModel;
using System.Windows.Forms;
using System.Threading;
using System.Timers;
namespace TestBackgroundWorker
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// Set the background worker to allow the user to stop the process.
backgroundWorkerStopCheck.WorkerSupportsCancellation = true;
}
private System.Timers.Timer myTimer;
private void backgroundWorkerStopCheck_DoWork(object sender, DoWorkEventArgs e)
{
//If cancellation is pending, cancel work.
if (backgroundWorkerStopCheck.CancellationPending)
{ …Run Code Online (Sandbox Code Playgroud) c# multithreading backgroundworker argument-passing cancel-button
我有一个字符串数组列表:
List<string[]> parsedRaw = new List<string[]>();
Run Code Online (Sandbox Code Playgroud)
此列表包含从CSV读入的行,其中parsedRaw [3] [5]将是从CSV的第三行读取的第五个项目.
我知道我可以在列表中找到行数:
parsedRaw.Count
Run Code Online (Sandbox Code Playgroud)
但是,给定一行,如何找到该行中的元素数量?我正在尝试在进入循环以从列表中读取之前实现测试,以避免"索引超出数组的范围"错误,其中循环是:
for (k = 0; k < nBytes; k++)
{
TheseBytes[k] = (byte)parsedRaw[i][StartInt + k];
}
Run Code Online (Sandbox Code Playgroud)
我遇到了CSV中一行中的错误,其中元素少于其他元素.在进入此循环之前,我需要检查parsedRaw [i]是否至少具有"StartInt + nBytes"元素.
谢谢你的任何建议!