如何创建一个变量来指示R中每个列表元素中数据的位置 [英] How to create a variable that indicate where the data from in every list elements in r

查看:207
本文介绍了如何创建一个变量来指示R中每个列表元素中数据的位置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的问题是我在标题中所说的,我发现鸭子的问题与我的相同(

My question is what I said in the title, and I found Duck's question same as mine (How to create in R new variable for each element in a list of data frames with the name of data frame and its value equal to position of the element).

在我对R的较差知识的基础上,尽管它确实满足了我的需求,但我对代码却不太了解.

Within my poor knowledge in R, I can't understand well the code though it really got what I wanted.

我知道我的代码无法运行,但是我虽然代码应该像这样:

I know my code can't run but I though the code should like this :

# create a fake data
df1 <- split(mtcars,mtcars$cyl)

# add a new variable that indicate where the element from in the list with the element name
df2 <- map(df1, mutate(from = names(df1)))

任何帮助将不胜感激!

推荐答案

您可以使用purrr中的imap将列表名称添加为新列

You can use imap from purrr to include name of the list as new column

purrr::imap(df1, ~dplyr::mutate(.x, from = .y))

#$`4`
#    mpg cyl  disp  hp drat    wt  qsec vs am gear carb from
#1  22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1    4
#2  24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2    4
#3  22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2    4
#4  32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1    4
#5  30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2    4
#6  33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1    4
#7  21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1    4
#8  27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1    4
#9  26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2    4
#10 30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2    4
#11 21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2    4

#$`6`
#   mpg cyl  disp  hp drat    wt  qsec vs am gear carb from
#1 21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4    6
#2 21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4    6
#3 21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1    6
#....

在基数R中,我们可以使用Map

In base R we can use Map

Map(cbind, df1, from = names(df1))
#Same as 
#purrr::map2(df1, names(df1), cbind)

这篇关于如何创建一个变量来指示R中每个列表元素中数据的位置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆