我有R对象:
"debt_30_06_2010" "debt_30_06_2011" "debt_30_06_2012" ...
需要使用函数调用它们:
paste0("debt_",date) ## "date" being another object
问题在于,当我将调用分配给另一个对象时,它只需要名称而不是内容:
debt_a <- paste0("endeud_", date1)
> debt_a
[1] "debt_30_06_2014"
我尝试使用“assign”功能但没有成功:
assign("debt_a", paste0("debt_", date))
> debt_a
[1] "debt_30_06_2014"
我想知道有任何方法可以完成这项任务。
答案 0 :(得分:3)
我们可以使用get
来获取对象的值。如果有多个对象,请使用mget
。例如,我在assign
'债务_a'的值为'debt_30_06_2010'
assign('debt_a', get(paste0('debt_', date[1])))
debt_a
#[1] 1 2 3 4 5
mget
返回list
。因此,如果我们将'debt_a'分配给多个对象,
assign('debt_a', mget(paste0('debt_', date)))
debt_a
#$debt_30_06_2010
#[1] 1 2 3 4 5
#$debt_30_06_2011
#[1] 6 7 8 9 10
debt_30_06_2010 <- 1:5
debt_30_06_2011 <- 6:10
date <- c('30_06_2010', '30_06_2011')
答案 1 :(得分:1)
我不确定我是否正确理解了您的问题,但我怀疑您的对象是函数的名称,并且您希望将这些名称构造为字符以使用这些函数。如果是这种情况,这个例子可能会有所帮助:
myfun <- function(x){sin(x)**2}
mychar <- paste0("my", "fun")
eval(call(mychar, x = pi / 4))
#[1] 0.5
#> identical(eval(call(mychar, x = pi / 4)), myfun(pi / 4))
#[1] TRUE