在R

时间:2017-07-14 01:32:28

标签: r excel loops store

我尝试使用for循环创建单个向量(我计划在数据框中以类似于Excel列的方式使用),日期增量为一天。这个想法是第一次运行从1月1日开始,第二次运行从1月2日开始,第三次运行开始于1月3日,依此类推......

我有一个POSIXct变量(rdays),它包含一年中前45天(1月1日到2月14日)的日期值,按小时步骤按以下格式显示:

    [1] "2012-01-01 00:00:00 EST" "2012-01-01 01:00:00 EST" "2012-01-01 02:00:00 EST"
    [4] "2012-01-01 03:00:00 EST" "2012-01-01 04:00:00 EST" "2012-01-01 05:00:00 EST"
    [7] "2012-01-01 06:00:00 EST" "2012-01-01 07:00:00 EST" "2012-01-01 08:00:00 EST"...

我正在使用以下for循环来创建这些增量:

    for(i in 1:321){
    range_days <- rdays + days(i) - days(1)
    a <- print(range_days)
    }

    a    # returns only the last iteration (the 321th)

我们的想法是将所有的运行存储在一个向量(或列表)中,但我找不到一种方法来存储它们所有连接的。我需要这种格式的数据以类似的方式将数据提取到Excel中的VLOOKUP以执行其他计算。

3 个答案:

答案 0 :(得分:1)

这就是使用sapply循环的东西,例如:

all_results <- sapply(1:321, function(i){
    range_days <- rdays + days(i) - days(1)
    print(range_days)
    })

结果将为循环中的每次迭代赋值。

答案 1 :(得分:1)

如果我们需要使用DatagramChannel channel = DatagramChannel.open(); channel.socket().bind(new InetSocketAddress(9999)); ByteBuffer chunkData = ByteBuffer.allocate(1024); chunkData.clear(); channel.receive(chunkData); // remove unwanted data byte[] validData = new byte[chunkData.position()]; System.arraycopy(chunkData.array(), 0, validData, 0, validData.length); System.out.println("---has received data:" + new String(validData)); 创建for并将其分配给值

list

然后,我们将range_days <- vector("list", 321) for(i in seq_len(321)){ range_days[[i]] <- rdays + days(i) - days(1) } 转换为list(如果需要)

vector

答案 2 :(得分:1)

使用for循环:

在循环外创建a作为空对象,然后在循环内将rbind结果发送到a以存储所有迭代。

a=NULL

for(i in 1:321){
  range_days <- rdays + days(i) - days(1)
  a <- rbind(a,range_days)
}