全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
12909 14
2015-07-19
n=200
A=array(0,dim=c(n,n,n))
for(i in 1:n)
for(j in 1:n)
for(k in 1:n)
A[i,j,k]=sin(i+j+k)+i*j*k-i
A
这是可以在R中运行的代码,由于n=200时数组太大导致运行时间太长。请问各位老师上述数组赋值不使用循环怎么实现。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2015-7-19 12:24:44
n <- 200
x <- rep(1:n,each=n^2);
y <- rep(rep(1:n,each=n),times=n);
z <- rep(1:n,times=n^2);
data <- cbind(x,y,z)   ##建立(1,1,1),(1,1,2)...(1,200,200), ...(200,200,200)的数组
f <- function(x) {sin(x[1]+x[2]+x[3])+x[1]*x[2]*x[3]-x[1]}
results <- apply(data,1,f)  

n=100时候是19s,n=200时候我的R会自动退出,你看看能用不
results是向量的格式,具体怎么对应你自己来吧
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-7-19 13:27:31
万人往LVR 发表于 2015-7-19 12:24
n
你的想法很好,请问你的计算机是台式机,还是笔记本呢,因为我用你的方法感觉时间不止19秒呢。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-7-19 13:29:02
提示: 作者被禁止或删除 内容自动屏蔽
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-7-19 22:34:44
fun<-function(n){
  A=array(0,dim=c(n,n,n))
  N=1:n
  dat=expand.grid(N,N,N)
  dat=as.matrix(dat)
  A[dat]=sin(rowSums(dat))+dat[,1]*dat[,2]*dat[,3]-dat[,1]
  A
}
system.time(fun(200))
##用户 系统 流逝
##3.64 0.40 4.68

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-7-20 10:00:11
tjxxukai 发表于 2015-7-19 13:27
你的想法很好,请问你的计算机是台式机,还是笔记本呢,因为我用你的方法感觉时间不止19秒呢。
笔记本,n=100时候是19s,n=200我的R直接崩溃了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群