R:是否可以使用 paste0 函数(或某些类似函数)将对象中存储的数据传递给新对象?

R: Is it possible to pass data stored in an object to a new object using the paste0 function (or some analogous function)?

抱歉,如果有人问过这个问题,我进行了彻底的搜索,但找不到类似的例子。也许我没有使用正确的词来描述我想要实现的目标?我认为这很容易做到。任何建议表示赞赏!

问题:

我想知道是否有一种方法可以使用 paste0 函数或某种类似方法将存储在对象中的数据传递给新对象,以便基于代入将数据从存储对象传递给新对象使用包含字符串的第三个对象的原始对象名称的一部分。我想也许有一个赋值运算符可以做到这一点(<<-,或赋值函数),但这些并没有实现我想要做的。

这里有一个简单的例子来说明我正在尝试做什么以及我已经尝试过什么:

set.seed(123)

# Create fake data for each day where data was collected (in reality these are maps)
## Day 1 through...
day1.thresh   <- rnorm(5)
day1.thresh

## ...day XXX
dayXXX.thresh  <- rnorm(5)
 
# Manually specify the day of interest
day <- 'day1'

# THESE DO NOT WORK:
# Assign a new name to a data object using the paste0 
## ...using the normal assignment operator
newObject1 <- paste0(day, ".thresh")
newObject1

## ...using the <<- operator 
newObject2 <<- paste0(day, ".thresh")
newObject2

## ...using assign()
assign("newObject3", paste0(day, ".thresh"), inherits = T)
newObject3

这是我得到的输出:

day1.thresh
>[1] -0.56047565 -0.23017749  1.55870831  0.07050839  0.12928774
newObject1
>[1] "day1.thresh"
newObject2
>[1] "day1.thresh"
newObject3
>[1] "day1.thresh"

结论:

这种做法显然行不通。名称“day1.thresh”被分配给新对象,而不是将与 day1 对象关联的数据传递给 newObject。理想情况下,当我键入 newObject 时,将返回存储在 day1.thresh 中的值(-0.56047565、-0.23017749、1.55870831、0.07050839、0.12928774),而不是名称“day1.thresh”。

您正在寻找 get :

assign("newObject3", get(newObject1))
newObject3
#[1] -0.5605 -0.2302  1.5587  0.0705  0.1293