在R

时间:2019-01-28 06:25:34

标签: r list function vector

我想知道是否有一种聪明的方法可以使eval(x2)的输出变成list就像eval(x1)的输出而无需更改x2一样?

P.S。。我的最终目标是实现此输出格式的功能。

x1 = list(dbinom(1:5, 5, .1), dbinom(1:7, 5, .1))

eval(x1)  ## this list format output is desired


x2 = c(dbinom(1:5, 5, .1), dbinom(1:7, 5, .1))

eval(x2)  ## can make this output to become like that of `eval(x1)`?

1 个答案:

答案 0 :(得分:1)

我们可以命名向量,然后命名为split

x2 <- c(a = dbinom(1:5, 5, .1), b = dbinom(1:7, 5, .1))
split(x2, substr(names(x2), 1, 1))

#$a
#     a1      a2      a3      a4      a5 
#0.32805 0.07290 0.00810 0.00045 0.00001 

#$b
#     b1      b2      b3      b4      b5      b6      b7 
#0.32805 0.07290 0.00810 0.00045 0.00001 0.00000 0.00000