楼主: mashagua
2000 5

[问答] R运行为什么得到的结果不对 [推广有奖]

  • 0关注
  • 1粉丝

博士生

88%

还不是VIP/贵宾

-

威望
0
论坛币
60 个
通用积分
69.1920
学术水平
1 点
热心指数
1 点
信用等级
0 点
经验
3931 点
帖子
198
精华
0
在线时间
258 小时
注册时间
2013-9-20
最后登录
2020-12-21

楼主
mashagua 学生认证  发表于 2016-7-29 17:07:08 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
x1<-c("a","b","c","d","e","h","k","l","m","n","p")
x2<-c(1,3,2,9,8,10,11,7,6,8,12)
x3<-c(0.12,0.11,0.02,0.31,0.22,0.17,0.43,0.35,0.61,0.44, 0.29)
x<-data.frame(x1,x2,x3)
library(dplyr)
data.list<-list()
for(i in 6:10)
{data.list[i-5]<-x%>% filter(x$x2>=i)}
得到的结果是
Warning messages:
1: In data.list[i - 5] <- x %>% filter(x$x2 >= i) :
  number of items to replace is not a multiple of replacement length
2: In data.list[i - 5] <- x %>% filter(x$x2 >= i) :
  number of items to replace is not a multiple of replacement length
3: In data.list[i - 5] <- x %>% filter(x$x2 >= i) :
  number of items to replace is not a multiple of replacement length
4: In data.list[i - 5] <- x %>% filter(x$x2 >= i) :
  number of items to replace is not a multiple of replacement length
5: In data.list[i - 5] <- x %>% filter(x$x2 >= i) :
  number of items to replace is not a multiple of replacement length
> data.list
[[1]]
[1] d e h k l m n p
Levels: a b c d e h k l m n p

[[2]]
[1] d e h k l n p
Levels: a b c d e h k l m n p

[[3]]
[1] d e h k n p
Levels: a b c d e h k l m n p

[[4]]
[1] d h k p
Levels: a b c d e h k l m n p

[[5]]
[1] h k p
Levels: a b c d e h k l m n p
为什么得不到下面的类型?
x1 x2   x3
1  d  9 0.31
2  e  8 0.22
3  h 10 0.17
4  k 11 0.43
5  l  7 0.35
6  n  8 0.44
7  p 12 0.29

二维码

扫码加我 拉你入群

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

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

关键词:replacement placement Multiple replace Levels multiple replace filter number

沙发
百年-树人 发表于 2016-7-29 22:14:36
将循环命令修改一下:
for(i in 6:10){data.list[[i-5]]<- x%>%filter(x$x2>=i)}
#注意这块是两个方括号

#x%>%和x$的作用重了,没必要
for(i in 6:10){data.list[[i-5]]<- x%>%filter(x2>=i)}  
for(i in 6:10){data.list[[i-5]]<- filter(x,x2>=i)}

藤椅
mashagua 学生认证  发表于 2016-7-30 09:00:33
百年-树人 发表于 2016-7-29 22:14
将循环命令修改一下:
for(i in 6:10){data.list[]%filter(x$x2>=i)}
#注意这块是两个方括号
谢谢你,学习了

板凳
mashagua 学生认证  发表于 2016-7-30 09:13:39
百年-树人 发表于 2016-7-29 22:14
将循环命令修改一下:
for(i in 6:10){data.list[]%filter(x$x2>=i)}
#注意这块是两个方括号
能否再问一下,怎样取出data.data.list[[5]][3]中的第一个元素
    x3
1 0.17
2 0.43
3 0.29,因为我想算一下0.17/sum(data.list[[5]][3])

报纸
百年-树人 发表于 2016-7-30 10:06:06
mashagua 发表于 2016-7-30 09:13
能否再问一下,怎样取出data.data.list[[5]][3]中的第一个元素
    x3
1 0.17
> data.list[[5]]
  x1 x2   x3
1  h 10 0.17
2  k 11 0.43
3  p 12 0.29
> data.list[5]
[[1]]
  x1 x2   x3
1  h 10 0.17
2  k 11 0.43
3  p 12 0.29
#比较两个方框和一个方框的索引结果。前者得到的是对应列表对象,那么对象是什么结构(比如向量、矩阵、数据框等),其输出结果就是什么结构;而后者得到的只是对应的子列表,其结构仍然是列表。
所以,若想得到某个子列表中的某个元素就简单了。先通过双方框索引提取出相应结构,再对该结构进行进一步索引。
如获取第五资列表的x3列的第一个元素:
> data.list[[5]][1,3]
[1] 0.17

地板
mashagua 学生认证  发表于 2016-7-30 10:27:30
百年-树人 发表于 2016-7-30 10:06
> data.list[[5]]
  x1 x2   x3
1  h 10 0.17
谢谢,谢谢,学习了

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

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