替代 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)))
在几个案例中,我试图将元素向量保存到我的全局环境中,以便能够用于查询数据库或其他后续分析。
例如,我在下面有一个数据框,但实际上我的数据包含数千个值。
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)))