替代 dput()、cat() 以将向量保存到全局环境

Alternative to dput(), cat() to save vector to global env

在几个案例中,我试图将元素向量保存到我的全局环境中,以便能够用于查询数据库或其他后续分析。

例如,我在下面有一个数据框,但实际上我的数据包含数千个值

df:
example start   stop   range
set1    1       4180   1:4180
set2    460     499    460:499
set3    1       1127   1:1127
set4    1128    1622   1128:1622
set5    3741    3748   3741:3748

有了这个数据框,我想捕获开始和停止之间的每个整数,所以我想使用范围列来创建每个整数的向量。

我一直在使用:

cat(paste0(df$range, collapse = ", "))

然后打印到控制台:

1:4180, 460:499, 1:1127, 1128:1622, 3741:3748

然后我copy/pasting那个输出将它保存为我的全局环境中的向量:

nums <- c(1:4180, 460:499, 1:1127, 1128:1622, 3741:3748)

一旦我有了这个向量,我就可以进行额外的分析,例如:

> length(nums)
[1] 5850
> length(unique(nums))
[1] 4180
> summary(nums)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
      1     712    1443    1727    2726    4180

等等等

有没有一种简单的方法可以跳过 copy/paste 步骤,直接将我想要的格式保存为矢量?

一个选项是 Map 以获取相应 'start'、'stop' 值和 unlist 之间的序列 (:) list 向量到单个向量。

vec <- unlist(Map(`:`, df$start, df$stop))

或者,如果我们想使用 'range' 列,那么 eval 对其进行修改

vec1 <- sapply(df$range, function(x) eval(parse(text = x)))