作者bboybighead2 (脚毛会唱歌)
看板R_Language
标题Re: [问题] 数列问题
时间Thu Jan 24 17:35:54 2019
※ 引述《swilly0906 (史威利哥哥)》之铭言:
: [问题类型]:
: [软体熟悉度]:
: 新手
: [问题叙述]:
: 其实我觉得这应该很简单的问题
: 但我觉得我的方法感觉好复杂= =
: 我的data有4万笔(dim = 40,000*200)
: 因为有特殊需求
: 接下来我会用trainset<-data[num1,]继续做一些分析(後面没问题)
: 问题程式码在下面
: 我的问题就是:有没有更精简的写法写出num1
: 或者我应该问:除了loop以外,有没有其他写法??
: [程式范例]:
: num <- c()
: num1 <- c()
: for(i in 0:3999){
: num <- rep((1:8)+i*10)
: num1 <- c(num1,num)
: }
: num1
: [关键字]:
: #数列
:
: 选择性,也许未来有用
:
我想到的方法是先用矩阵格式处理完,再转回向量。
如果我没理解错,
你回圈的目标就是要把1:4000的数字,尾数9跟0去掉。
所以我先这样做
mat <- matrix(c(1:40000),c(4000,10),byrow = T)[,c(1:8)]
#这行的作法是生成dim为4000、10的矩阵,然後数字从1:40000
#然後把最後两列拿掉(相当於把所有尾数为9与0的数字拿掉)
vec <- as.vector(t(mat))
#最後再把处理完的矩阵转置之後返回成向量(类型为integer,可自行转为numeric)
这样可以一次处理完所有数字,不必浪费额外的计算资源。
如果有人还有其他方法请赐教XD
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.228.192.232
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1548322557.A.A1E.html
1F:→ bboybighead2: 突然看到原文下方s大留的方法,测试一下执行时间回 01/24 17:50
2F:→ bboybighead2: 圈速度如果改为40万个数会慢很多,s大跟我的方法时 01/24 17:51
3F:→ bboybighead2: 间几乎没影响。不过s大的写法更精简! 01/24 17:51
4F:推 swilly0906: 酷唷 谢谢XDDD 01/25 23:33