楼主: 比尔2020
606 4

[问答] 从dataframe提取list的问题。 [推广有奖]

  • 0关注
  • 0粉丝

高中生

50%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
61.6364
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
223 点
帖子
14
精华
0
在线时间
44 小时
注册时间
2021-12-6
最后登录
2024-1-15

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
学习R语言的新手。
一个dataframe数据框
df1<-data.frame('产品名称'=c('A','B','C'),'2016年'=c(201,23,2130),'2017年'=c(423,25,2087),'2018年'=c(190,29,2019))
> df1
  产品名称 X2016年 X2017年 X2018年
1        A     201     423     190
2        B      23      25      29
3        C    2130    2087    2019


注:产品名称是不重复的。
因为作图需要,需要从这个数据框中提取出列表list,以产品名称作为列表名称,对应行数据为列数据,如下:

微信截图_20211215160718.png

请教各位大神,这个用哪个函数,怎么实现? 谢谢!


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Dataframe Frame Data Fram list R语言程序请教 R语言初学者 论坛

沙发
s609078902 发表于 2021-12-15 17:06:10 |只看作者 |坛友微信交流群
初学者的话给你写个初阶方法,有助于学习 R 的 for 循环。不过什么样的图要用列表来画。
  1. d <- vector("list", nrow(data))
  2. names(d) <- data[[1]]

  3. for (i in seq_along(d)) {
  4.   d[[i]] <- data[[i, 2:4]]
  5. }
复制代码

使用道具

藤椅
比尔2020 发表于 2021-12-15 17:37:10 |只看作者 |坛友微信交流群
s609078902 发表于 2021-12-15 17:06
初学者的话给你写个初阶方法,有助于学习 R 的 for 循环。不过什么样的图要用列表来画。
谢谢老师。
先做一个空list,然后用for去填充数据框中的内容,对吧。

这是kableExtra包里的画图函数参数需要使用列表。

再次感谢老师的帮助,谢谢!

使用道具

板凳
比尔2020 发表于 2021-12-15 17:58:34 |只看作者 |坛友微信交流群
s609078902 发表于 2021-12-15 17:06
初学者的话给你写个初阶方法,有助于学习 R 的 for 循环。不过什么样的图要用列表来画。
运行了一下,提示错误:
Error in .subset2(x, ..2, exact = exact) :
recursive indexing failed at level 2
2.
`[[.data.frame`(df, i, 2:4)
1.
df[[i, 2:4]]

查了一下,是data[[i,2:4]]出错了。

使用道具

报纸
比尔2020 发表于 2021-12-16 14:36:30 |只看作者 |坛友微信交流群
s609078902 发表于 2021-12-15 17:06
初学者的话给你写个初阶方法,有助于学习 R 的 for 循环。不过什么样的图要用列表来画。
d <- vector("list", nrow(data))
names(d) <- data[[1]]

for (i in seq_along(d)) {
  d[] <- t(data)[,i]
}
基本解决问题。

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-26 16:07