【问题标题】:R: Is it possible to pass data stored in an object to a new object using the paste0 function (or some analogous function)?R:是否可以使用 paste0 函数(或一些类似的函数)将存储在对象中的数据传递给新对象?
【发布时间】:2020-10-12 23:09:17
【问题描述】:

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

问题:

我想知道是否有一种方法可以使用 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”。

【问题讨论】:

    标签: r object variable-assignment assign assignment-operator


    【解决方案1】:

    您正在寻找get

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

    【讨论】:

    • 这很容易@Ronak,得到就是我需要的!