作為專案的一部分,我生成了許多變數,我發現我需要將它們重新組合在一個串列中(例如:)list(var1, var2, ..., varn。有沒有辦法插入它們而無需輸入每個?
uj5u.com熱心網友回復:
@Roland 提到的 -
var1 <- 1:5
var2 <- 1:10
data <- mget(paste0('var', 1:2))
data
#$var1
#[1] 1 2 3 4 5
#$var2
# [1] 1 2 3 4 5 6 7 8 9 10
此外,與ls和pattern-
data <- mget(ls(pattern = 'var'))
uj5u.com熱心網友回復:
您始終可以從環境 (list2env) 和逆向 (as.list) 生成串列:
L <- list(a = 1, b = 2:4, p = pi, ff = gl(3, 4, labels = LETTERS[1:3]))
e <- list2env(L)
e$ff
# [1] A A A A B B B B C C C C
#Levels: A B C
as.list(e)
#$ff
# [1] A A A A B B B B C C C C
#Levels: A B C
#
#$p
#[1] 3.141593
#
#$b
uj5u.com熱心網友回復:
library(tidyverse)
var1 <- 'a'
var2 <- 4
var3 <- head(iris)
#Searching all names that start with var
nms <- str_subset(names(.GlobalEnv), '^var')
(vars <- map(nms, ~eval(parse(text = .))) %>%
set_names(nms))
#> $var1
#> [1] "a"
#>
#> $var2
#> [1] 4
#>
#> $var3
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#> 1 5.1 3.5 1.4 0.2 setosa
#> 2 4.9 3.0 1.4 0.2 setosa
#> 3 4.7 3.2 1.3 0.2 setosa
#> 4 4.6 3.1 1.5 0.2 setosa
#> 5 5.0 3.6 1.4 0.2 setosa
#> 6 5.4 3.9 1.7 0.4 setosa
#alternative we can call enframe on the resulting list.
enframe(vars)
#> # A tibble: 3 × 2
#> name value
#> <chr> <list>
#> 1 var1 <chr [1]>
#> 2 var2 <dbl [1]>
#> 3 var3 <df [6 × 5]>
由reprex 包(v2.0.1)于 2021 年 12 月 25 日創建
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/393448.html
標籤:r
上一篇:將串列轉換為資料框而不會弄亂資料
