Hi I have not seen any answer yet so I wil try (partly).
I believe that the loop can be vectorised but I am a little bit lost in your fors and ifs. I found that first part of res is same as cumsum(tab$x.jour) until about 81st value. However I did not decipher how to compute the remaining part. I tried to add cumsum(tab$posit.lat) (after changing NA to 0) what is not correct. Probably some combination of logical operation and summing can do what you want. I thought that something like ((cumsum(tab$posit.lat)*0.8)*(cumsum(tab$x.jour)>30)+cumsum(tab$x.jour )) can do it but the result is defferent from your computation. Not much of help, but maybe you can do better with above suggestion. Petr On 2 Nov 2006 at 11:15, GOUACHE David wrote: Date sent: Thu, 2 Nov 2006 11:15:49 +0100 From: "GOUACHE David" <[EMAIL PROTECTED]> To: <[email protected]> Subject: [R] avoiding a loop: "cumsum-like" > Hello Rhelpers, > > I need to run the following loop over a large number of data-sets, and > was wondering if it could somehow be vectorized. It's more or less a > cumulative sum, but slightly more complex. Here's the code, and an > example dataset (called tab in my code) follows. Thanks in advance for > any suggestions! > > res<-0 > for (i in min(tab$Date):max(tab$Date)) > { > if (is.na(tab$posit.lat[tab$Date==i])==T) > { > res<-c(res,res[length(res)]+tab$x.jour[tab$Date==i]) > } > else > { > if (res[tab$posit.lat[tab$Date==i]+1]<30) > { > res<-c(res,res[length(res)]+tab$x.jour[tab$Date==i]) > } > else > { > res<-c(res,res[length(res)]+tab$x.jour[tab$Date==i]+0.8*res[tab$pos > it.lat[tab$Date==i]+1]) > } > } > } > res[-1] > > > Date x.jour posit.lat > 35804 0 NA > 35805 0 NA > 35806 0 NA > 35807 0 NA > 35808 0 NA > 35809 2.97338883 NA > 35810 2.796389915 NA > 35811 0 NA > 35812 0 NA > 35813 1.000711886 NA > 35814 0.894422571 NA > 35815 0 NA > 35816 0 NA > 35817 0 NA > 35818 0 NA > 35819 0 NA > 35820 0 NA > 35821 0 NA > 35822 0 NA > 35823 0 NA > 35824 0 NA > 35825 0 NA > 35826 0 NA > 35827 0 NA > 35828 0 NA > 35829 0 NA > 35830 0 NA > 35831 0 NA > 35832 0 NA > 35833 0 NA > 35834 0 NA > 35835 0 NA > 35836 0 NA > 35837 0 NA > 35838 0 NA > 35839 0 NA > 35840 2.47237455 NA > 35841 0 2 > 35842 0 3 > 35843 0 4 > 35844 0 5 > 35845 0 6 > 35846 0 7 > 35847 4.842160488 8 > 35848 2.432125036 9 > 35849 0 10 > 35850 0 12 > 35851 0 14 > 35852 0 16 > 35853 3.739683882 18 > 35854 1.980214421 20 > 35855 0 22 > 35856 0 24 > 35857 5.953444078 27 > 35858 6.455722475 29 > 35859 0 31 > 35860 3.798690334 32 > 35861 6.222993364 34 > 35862 3.746243098 35 > 35863 0 35 > 35864 0 36 > 35865 0 37 > 35866 0 38 > 35867 0 38 > 35868 0 39 > 35869 0 40 > 35870 0 41 > 35871 0 42 > 35872 0 43 > 35873 0 44 > 35874 0 45 > 35875 0 46 > 35876 0 47 > 35877 1.951774892 48 > 35878 0 49 > 35879 0 50 > 35880 1.702837643 50 > 35881 0 52 > 35882 0 53 > 35883 0 54 > 35884 0 55 > 35885 5.953444078 57 > 35886 0 58 > 35887 5.737515358 59 > 35888 0 61 > 35889 6.215941227 63 > 35890 4.731576675 64 > 35891 0 66 > 35892 2.255448314 66 > 35893 3.782283008 67 > 35894 3.244474546 68 > 35895 1.808553193 69 > 35896 2.622680002 70 > 35897 0 71 > 35898 0 72 > 35899 0 72 > 35900 1.7084177 73 > 35901 1.28455982 74 > 35902 2.320013736 76 > 35903 0 77 > 35904 0 78 > 35905 0 79 > 35906 0 79 > 35907 0 80 > 35908 6.716812458 81 > 35909 0 82 > 35910 6.796571531 84 > 35911 5.573668337 85 > 35912 5.42513958 86 > 35913 3.774513877 86 > 35914 0 87 > 35915 0 89 > 35916 0 90 > 35917 4.208252725 91 > 35918 0 92 > 35919 0 93 > 35920 0 95 > 35921 5.70023661 97 > 35922 0 98 > 35923 0 100 > 35924 0 102 > 35925 0 103 > 35926 0 104 > > David Gouache > Arvalis - Institut du Végétal > Station de La Miničre > 78280 Guyancourt > Tel: 01.30.12.96.22 / Port: 06.86.08.94.32 > > ______________________________________________ > [email protected] mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html and provide commented, > minimal, self-contained, reproducible code. Petr Pikal [EMAIL PROTECTED] ______________________________________________ [email protected] mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
