[FORGED] Re: get() return nothing
Hi,
When you want to get 'something' out of a loop you need to assign that 'something' to a variable that persists outside of the loop. I think it is a scoping thing. In your situation you could create a list with as many elements as there are objects with 'txt' in their names. I can't quite follow what is is you are after, but perhaps something like this (untested and I'm still on my first cup of coffee) ...
obj_names <- ls(pattern="txt")
obj_dims <- vector(mode = 'list', length = length(obj_names))
names(obj_dims) <- obj_names
for (nm in obj_names)){
obj_dims[[nm]] <- dim(get(nm))
}
Does that do what you want? If so, you could probably use lapply() for the purpose instead of the for loop, but even better is to store each of your objects in a list as you create them rather than letting them get loose in the global environment. That way you don't have to do this get-by-name rodeo to get info on them.
Cheers,
Ben
On Feb 14, 2017, at 2:57 AM, Rolf Turner <r.turner at auckland.ac.nz> wrote: On 14/02/17 05:50, Fix Ace via R-help wrote:
Well, I am not trying to print anything. I just would like to get the dimension information for all the dataframes I created. Could you please help me to develop the script? Thanks. Ace
Yes you *are* trying to print something. You are trying to print the dimension information, i.e. dim(get(i))!!! For Pete's sake (a) *think* about what you are doing and (b) *try* example that Duncan suggested to you. cheers, Rolf Turner
On Saturday, February 11, 2017 7:53 PM, Duncan Murdoch <murdoch.duncan at gmail.com> wrote: On 11/02/2017 1:33 PM, Fix Ace via R-help wrote:
Hello, there, I wrote a loop to check the dimension of all the .txt dataframes:> ls() [1] "actualpca.table" "b4galnt2" "b4galnt2.txt" "data" [5] "galnt4" "galnt4.txt" "galnt5" "galnt5.txt" [9] "galnt6" "galnt6.txt" "glyco" "glyco.txt" [13] "i" "mtscaled" "newsig.table" "nicepca" [17] "pca" "sig.txt" "st3gal3" "st3gal3.txt" [21] "st3gal5" "st3gal5.txt" "st6gal1" "st6gal1.txt"
for(i in ls(pattern="txt")){dim(get(i))}
If I check individual ones, they are ok:
dim(get("galnt4.txt"))
[1] 8 3
could anyone help me to figure out why it did not work with a loop? Thanks a lot!
It's the difference between for (i in 1:10) i (which prints nothing) and for (i in 1:10) print(i) Duncan Murdoch [[alternative HTML version deleted]]
______________________________________________ R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.
-- Technical Editor ANZJS Department of Statistics University of Auckland Phone: +64-9-373-7599 ext. 88276
______________________________________________ R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.
Ben Tupper Bigelow Laboratory for Ocean Sciences 60 Bigelow Drive, P.O. Box 380 East Boothbay, Maine 04544 http://www.bigelow.org