首页 > 解决方案 > 如何在不删除当前变量的情况下将 10,20,...,50 添加到向量中的每个变量?

问题描述

我想处理长度超过 100k 的整数。下面是适用于小数据的代码,但我正在努力处理超过 100k 的大小。

test[,2] 是我想要管理的。

如下所示:

[1560502005 1560502065 1560502125 1560502185 1560502245 1560502305 1560502365 ....]

我想要的最终结果是:

[1560502005 1560502015 1560502025 1560502035 1560502045 1560502055 1560502065 1560502075 ...]

将 10, 20, ... 50 添加到每个变量text[,2]

最终结果的长度为6*length(text[,2])

library(jsonlite) #For fromJSON
library(anytime) #For anytime
library(plyr)
test <- fromJSON('RT_data_this_should_be_used_for_rt_analysis.json')

row_2=nrow(test)
date_data<-data.frame()

#test[,2][1] is a unix time.

for (i in 1:row_2){
  date_data<-rbind.fill(date_data,as.data.frame(rbind(test[,2][i],
                   test[,2][i]+10,
                   test[,2][i]+20,
                   test[,2][i]+30,
                   test[,2][i]+40,
                   test[,2][i]+50))) #Add 10 seconds to match 6 locations
}

head(date_data) #Unix timestamp dataframe

date_data_fixed = data.frame()

for (i in 1:nrow(date_data)){
  date_data_fixed[i,1] <- anytime(date_data[i,]) #Convert to KRT time
}
head(date_data_fixed)

我尝试使用 rbindlist 但出现类似“错误:参数 1 必须有名称”的错误

标签: r

解决方案


我们可以使用repandseq来完成这个任务。

vec <- c(1560502005, 1560502065, 1560502125, 1560502185, 1560502245, 1560502305, 1560502365)

rep(vec, each = 6) + rep(seq(0, 50, 10), times = length(vec))
# [1] 1560502005 1560502015 1560502025 1560502035 1560502045 1560502055 1560502065 1560502075 1560502085
# [10] 1560502095 1560502105 1560502115 1560502125 1560502135 1560502145 1560502155 1560502165 1560502175
# [19] 1560502185 1560502195 1560502205 1560502215 1560502225 1560502235 1560502245 1560502255 1560502265
# [28] 1560502275 1560502285 1560502295 1560502305 1560502315 1560502325 1560502335 1560502345 1560502355
# [37] 1560502365 1560502375 1560502385 1560502395 1560502405 1560502415

推荐阅读