我正在编写一个函数来生成表格。请参阅下文。
x <- list(alpha = 1:10,
beta = exp(-3:3),
gamma = c(sin(pi/6), cos(pi/6), tan(pi/6)))
lapply(x, function(x){
temp <- tibble(Source = "foo",
Original = x,
Square = x ^ 2,
Cubic = x ^ 3)
return(temp)
}
)
输出如下:
问题是:如何让源列显示“alpha”、“beta”和“gamma”?
谢谢!
答案 0 :(得分:0)
这可能不是最优雅的答案,但这是有效的。请注意,我在这里使用了 purrr::map
而不是 lapply。
x <- list(alpha = 1:10 %>% as_tibble() %>% rename("alpha" = value),
beta = exp(-3:3) %>% as_tibble() %>% rename("beta"= value),
gamma = c(sin(pi/6), cos(pi/6), tan(pi/6)) %>% as_tibble() %>% rename("gamma" = value))
map(x, ~ tibble(source = colnames(.), original = ., square = .^2, cubic = . ^3))
答案 1 :(得分:0)
在 base 中,您可以使用 Map
:
Map(function(x, y) tibble(Source = y,Original = x,Square = x ^ 2, Cubic = x ^ 3),
x, names(x))
#$alpha
# A tibble: 10 x 4
# Source Original Square Cubic
# <chr> <int> <dbl> <dbl>
# 1 alpha 1 1 1
# 2 alpha 2 4 8
# 3 alpha 3 9 27
# 4 alpha 4 16 64
# 5 alpha 5 25 125
# 6 alpha 6 36 216
# 7 alpha 7 49 343
# 8 alpha 8 64 512
# 9 alpha 9 81 729
#10 alpha 10 100 1000
#$beta
# A tibble: 7 x 4
# Source Original Square Cubic
# <chr> <dbl> <dbl> <dbl>
#1 beta 0.0498 0.00248 0.000123
#2 beta 0.135 0.0183 0.00248
#3 beta 0.368 0.135 0.0498
#4 beta 1 1 1
#5 beta 2.72 7.39 20.1
#6 beta 7.39 54.6 403.
#7 beta 20.1 403. 8103.
#$gamma
# A tibble: 3 x 4
# Source Original Square Cubic
# <chr> <dbl> <dbl> <dbl>
#1 gamma 0.500 0.250 0.125
#2 gamma 0.866 0.75 0.650
#3 gamma 0.577 0.333 0.192
在 purrr
中,imap
会有所帮助。
purrr::imap(x, ~tibble(Source = .y,Original = .x,Square = .x ^ 2,Cubic = .x ^ 3))