从数据表中提取值

时间:2019-07-24 13:09:09

标签: r datatable

我有以下数据表(在示例中,我仅占用3行):

data <- data.table(var=c("a","b","c"), value=c(-1,2,1))    

我想提取每个变量作为值,而无需每次需要它们时都对其进行子设置。 我想得到以下输出:

a <- -1
b <- 2
c <- 1

3 个答案:

答案 0 :(得分:2)

可以选择split返回一对key/value。最好不要在全局环境中创建对象

lst1 <- split(data$value, data$var)
lst1
#$a
#[1] -1

#$b
#[1] 2

#$c
#[1] 1

但是,如果需要的话,

list2env(lst1, .GlobalEnv)
a
#[1] -1
b
#[1] 2
c
#[1] 1

或者另一个选项是deframe,然后使用list2env

library(tibble)
list2env(as.list(deframe(data)), .GlobalEnv)

答案 1 :(得分:1)

尽管不建议在全局环境中创建对象,但是我们可以尝试eval(parse(...))方法来解决您的问题,

eval(parse(text = do.call(paste, c(data, sep = '<-'))))
a
#[1] -1
b
#[1] 2
c
#[1] 1

答案 2 :(得分:1)

使用purrr

 res<-purrr::map2(data$var, data$value, 
            function(x,y) 
             x <- y

            )
names(res) <- data$var

以上在获得结果后设置名称。

res

$a
[1] -1

$b
[1] 2

$c
[1] 1

使用base的{​​{1}},我们可以使用:

mapply

或者:

  as.list(mapply(function(x,y) assign(x,y,new.env()),
       data$var,data$value))
$a
[1] -1

$b
[1] 2

$c
[1] 1