我需要创建一个循环函数,其中我需要寻址名称以数字结尾的后续对象,即对象 1、对象 2、对象 3。所以代码应该看起来像这样:
object1 <- c(1,2,3,4,5)
object2 <- c(2,3,4,5,6)
object3 <- c(3,4,5,6,7)
for (i in 1:3) {
assign (paste0("new_object",i), mean(object???))
}
所以我需要一个相当于打字
new_object1 <- mean(object1)
new_object2 <- mean(object2)
new_object3 <- mean(object3)
提前非常感谢!
通过将"i"与"object"字符串paste
来返回该对象的值是get
for (i in 1:3) {
assign(paste0("new_object",i), mean(get(paste0('object', i)))
}
但是,这不是推荐的方法,因为它会在全局环境中创建新对象。
相反,如果目的是获取所有"对象"的mean
,
sapply(mget(paste0("object", 1:3)), mean)
或者,如果有三个以上,请将ls
与pattern
一起使用
sapply(mget(ls(pattern = '^object\d+$')), mean)
在这里,mget
返回list
中多个对象的值,使用sapply
遍历list
,并在list
元素上应用mean
函数。
创建对象也可以从list
完成,list2env
out <- lapply( mget(ls(pattern = '^object\d+$')), mean)
names(out) <- paste0('new_', names(out))
list2env(out, .GlobalEnv) # not recommended based on the same reason above