楼主: superhugo
5701 8

[问答] 统计高手进来看看这个问题-将循环值赋给向量 [推广有奖]

  • 0关注
  • 0粉丝

已卖:56份资源

硕士生

50%

还不是VIP/贵宾

-

威望
0
论坛币
7145 个
通用积分
3.3519
学术水平
8 点
热心指数
8 点
信用等级
7 点
经验
2602 点
帖子
131
精华
0
在线时间
145 小时
注册时间
2011-4-8
最后登录
2025-4-6

楼主
superhugo 发表于 2011-5-24 09:37:23 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
编了下面一段程序,其中必要的参数step、datai等都已在前面的程序段指定。想通过for循环计算不同的numofLi值对应的valueq[[j]]的值j/(numofLi+1),并将其所有计算值存在文本valueq.txt。究竟这个valueq应该如何定义才好呢??初学者,望高手们不吝赐教。计算中遇到的问题附后。
valueq=list()
for (i in 1:step)
{
numofLi=length(datai[[i]])
write(numofLi,file="numofLi.txt",ncolumns=1,append=TRUE,sep="  ")
sortq<-sort(datai[[i]])
for (j in 1:numofLi)
{
valueq[[j]]=j/(numofLi+1)
}
write(valueq,file="valueq.txt",ncolumns=1,append=TRUE,sep="  ")
write(sortq,file="sortq.txt",ncolumns=1,append=TRUE,sep="  ")
}

提示错误:
错误于cat(list(...), file, sep, fill, labels, append) :
  cat目前还不能处理1(种类为'list')参数
二维码

扫码加我 拉你入群

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

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

关键词:columns append column length value 统计 高手 向量

回帖推荐

ltx5151 发表于8楼  查看完整内容

7# superhugo OK. 明白了。是我没理解lz的意思,lz的这个程序完全不是在执行lz想做的事。 如果我没有理解错你的意图,你是希望把每个内部循环的数 j/j/(numofLi+1) 储存在一个向量里,这样一个内部循环会有numofLi个值,然后你外部循环跑step次,这样相当于你一共要储存step个向量。 对吗? 如果你想做这件事,那么需要在内部把list中的那个元素定义为向量,而不是直接对list的元素其进行操作。 你在每次外部循环里面,(不 ...

ltx5151 发表于5楼  查看完整内容

valueq

本帖被以下文库推荐

沙发
ltx5151 发表于 2011-5-24 10:19:54
直接把valueq定义成向量不就好了,为什么要用list呢?

藤椅
superhugo 发表于 2011-5-24 10:27:32
2# ltx5151
需要额外语句定义向量吗?直接用valueq=1/(numofLi+1)语句没法得到循环过程中的所有值,只能得到最后循环的值。。。

板凳
superhugo 发表于 2011-5-24 11:16:55
版主,对上面这个问题应该怎么处理好?

报纸
ltx5151 发表于 2011-5-24 11:32:19
valueq <- rep(0,step)
然后
for(i in 1:step){
##你的程序
valueq <- #你要赋的值
}
其实根据你上面的程序,可以不用循环,而使用lapply,这样会更高效些。不过如果你的数据量不是很大,看不出区别,用循环更直观一些。

地板
superhugo 发表于 2011-5-24 11:46:28
感谢版主的热情解答。我再根据您的建议调试下程序看看

7
superhugo 发表于 2011-5-24 14:59:43
根据版主提供的程序段,发现最后还是无法得到循环过程中的所有值,而只能得到每一循环末端值。这个程序的目的是根据不同的numofLi值,得到在j=1:numofLi的循环过程中的每一个valueq的值,这就有numofLi×step个数,其中step是外循环的最大值(最开始的程序段中有)。

8
ltx5151 发表于 2011-5-24 16:26:06
7# superhugo
OK. 明白了。是我没理解lz的意思,lz的这个程序完全不是在执行lz想做的事。

如果我没有理解错你的意图,你是希望把每个内部循环的数 j/j/(numofLi+1) 储存在一个向量里,这样一个内部循环会有numofLi个值,然后你外部循环跑step次,这样相当于你一共要储存step个向量。 对吗? 如果你想做这件事,那么需要在内部把list中的那个元素定义为向量,而不是直接对list的元素其进行操作。
你在每次外部循环里面,(不考虑你write的那部分),首先定义valueq[] <- rep(0,numofLi)。然后你的每一步要储存的时候赋值给valueq[][j]。你现在的操作是每次循环把你自己前面储存的值覆盖掉了,所以你只能得到循环最后一个值。

9
superhugo 发表于 2011-5-24 18:08:06
8# ltx5151
呵呵,谢谢版主的热心。是的,我的目的正如版主所说。其实问题很简单,只是因为不太熟悉R软件里面的向量定义和相关操作。我再按你的建议改改。再次感谢!
还有lapply函数中的FUN变量应该怎么指定啊?我这个对应的函数是 j/(numofLi+1),如果不能直接用内部函数,是不是还得自定义函数?粗略看了一下R软件里面对lapply的说明,感觉说得不是很清楚。有时间再去看看实例。

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 05:30