楼主: 琥珀川lz
4029 10

[问答] 用for循环批量画图 [推广有奖]

  • 6关注
  • 2粉丝

讲师

49%

还不是VIP/贵宾

-

威望
0
论坛币
1 个
通用积分
36.1484
学术水平
0 点
热心指数
5 点
信用等级
0 点
经验
7026 点
帖子
184
精华
0
在线时间
717 小时
注册时间
2010-12-16
最后登录
2024-10-13

楼主
琥珀川lz 发表于 2019-12-22 04:33:33 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我有一个叫icadata的数据,其中的第2到13列和第16列是连续型变量,我想分别对他们画直方图,但一个一个画太麻烦,我就想到了下面的循环,但是运行不过去,请问有人知道具体什么原因么,先谢谢大家

for(i in c(2:13,16)){
  ggplot(data = icadata) +
    geom_histogram(mapping = aes(x = icadata[,i]), binwidth = 0.5)
}
二维码

扫码加我 拉你入群

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

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

关键词:for循环 For histogram Mapping gplot

已有 1 人评分论坛币 热心指数 收起 理由
逐梦的太阳 + 10 + 5 鼓励积极发帖讨论

总评分: 论坛币 + 10  热心指数 + 5   查看全部评分

沙发
琥珀川lz 发表于 2019-12-22 04:34:39
Don't know how to automatically pick scale for object of type tbl_df/tbl/data.frame. Defaulting to continuous.
Error in is.finite(x) : default method not implemented for type 'list'。这是程序报的错,我不太明白

藤椅
owenqi 在职认证  学生认证  发表于 2019-12-22 05:33:21
你试试看这样行不行
  1. library(ggplot2)
  2. icadata <- data.frame(rnorm(100), rpois(100, 2), rbeta(100,2,4), rgamma(100, 2, 1))

  3. p <- list()
  4. for(i in c(1, 3:4)){
  5.   p[[i]] <- ggplot(data = icadata, aes(x = icadata[,i])) + geom_histogram(binwidth = 0.5)
  6. }
复制代码
已有 2 人评分论坛币 学术水平 热心指数 收起 理由
逐梦的太阳 + 10 + 5 + 5 精彩帖子
cheetahfly + 10 热心帮助其他会员

总评分: 论坛币 + 20  学术水平 + 5  热心指数 + 5   查看全部评分

板凳
琥珀川lz 发表于 2019-12-23 10:39:28
owenqi 发表于 2019-12-22 05:33
你试试看这样行不行
你这段代码我是可以运行的,但是我换成自己的数据就不行了,还是报(Don't know how to automatically pick scale for object of type tbl_df/tbl/data.frame. Defaulting to continuous.
Error in is.finite(x) : default method not implemented for type 'list')的错,不知道是不是因为我的数据是tbl_df的类型

报纸
琥珀川lz 发表于 2019-12-23 11:40:07
owenqi 发表于 2019-12-22 05:33
你试试看这样行不行
好像是这里的问题,应该把icadata[,i]改成icadata[]

地板
琥珀川lz 发表于 2019-12-23 11:42:15
p[[2]]<-ggplot(data = icadata, aes(x = icadata[[2]])) + geom_histogram()
p[[3]]<-ggplot(data = icadata, aes(x = icadata[[3]])) + geom_histogram()
p[[4]]<-ggplot(data = icadata, aes(x = icadata[[4]])) + geom_histogram()
p[[5]]<-ggplot(data = icadata, aes(x = icadata[[5]])) + geom_histogram()
p[[6]]<-ggplot(data = icadata, aes(x = icadata[[6]])) + geom_histogram()
p[[7]]<-ggplot(data = icadata, aes(x = icadata[[7]])) + geom_histogram()
p[[8]]<-ggplot(data = icadata, aes(x = icadata[[8]])) + geom_histogram()
p[[9]]<-ggplot(data = icadata, aes(x = icadata[[9]])) + geom_histogram()
p[[10]]<-ggplot(data = icadata, aes(x = icadata[[10]])) + geom_histogram()
p[[11]]<-ggplot(data = icadata, aes(x = icadata[[11]])) + geom_histogram()
p[[12]]<-ggplot(data = icadata, aes(x = icadata[[12]])) + geom_histogram()
p[[13]]<-ggplot(data = icadata, aes(x = icadata[[13]])) + geom_histogram()
p[[16]]<-ggplot(data = icadata, aes(x = icadata[[16]])) + geom_histogram()

p <- list()
for(i in c(2:13,16) ){
  p[[i]]<-ggplot(data = icadata, aes(x = icadata[[i]])) + geom_histogram()
}


但又遇到问题,上面分开画是可以的,但写成循环以后,p[[2]],p[[3]],...p[[16]]全都变成一样的了

7
琥珀川lz 发表于 2019-12-23 11:42:49
有人晓得这两者的区别么

8
owenqi 在职认证  学生认证  发表于 2019-12-24 02:44:39
你可以对比一下两个数据框(dataframe)的区别,因为我也看不到你的数据,所以我只能自己生成数据演示。
  1. str(icadata)
复制代码

9
tianwk 发表于 2019-12-25 08:45:56
thanks for sharing

10
gx666666gx888 发表于 2019-12-25 09:56:17
学习一下。

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-26 19:59