简体   繁体   中英

Applying some functions to multiple objects

I am on Mac OS 10.10 with R 3.1.1

Suppose I have the following data frames a and b with the same attributes:

a<- structure(list(X1 = 1:5, X2 = 6:10), .Names = c("X1", "X2"), row.names = c(NA, 
-5L), class = "data.frame")
b<- structure(list(X1 = 11:15, X2 = 16:20), .Names = c("X1", "X2"
), row.names = c(NA, -5L), class = "data.frame")

and suppose I need to do some cleaning/apply some functions (like dropping column and multiply the first column by 2) on both a and b at the same time such that the original data frames reflect the changes with the following desired output:

> a
  X1 
1  2 
2  4 
3  6 
4  8
5 10

> b
  X1
1 22
2 24
3 26
4 28
5 30

I have just learnt the for loops and *apply functions but get confused when applying them on the data frames I have (which are not a and b but much bigger).

It is generally encouraged (by the R Core team memebers) that if you have several data sets that you want to simultaneously operate on, you should keep them all in a list. In order to achieve your goal, you can simply use mget and ls to retreive them from the global environment and then simply replace with first column multiplied by 2, eg,

lapply(mget(ls(pattern = "[a-z]")), function(x) x <- x[1] * 2)
# $a
# X1
# 1  2
# 2  4
# 3  6
# 4  8
# 5 10
# 
# $b
# X1
# 1 22
# 2 24
# 3 26
# 4 28
# 5 30

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM