楼主: XXXjl
3439 6

[问答] R 如何用for循环分类并建立新数据 [推广有奖]

  • 1关注
  • 0粉丝

高中生

67%

还不是VIP/贵宾

-

威望
0
论坛币
108 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1369 点
帖子
18
精华
0
在线时间
42 小时
注册时间
2016-3-25
最后登录
2018-12-26

楼主
XXXjl 发表于 2017-11-4 15:31:41 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
> data=read.csv(file.choose(),header=T)
> data
     ID class score
1     1     1    44
2     2     1    53
3     3     1    90
.
.
.
281 281     4    68
282 282     4    78
283 283     4    77
284 284     4    54
285 285     4    45
286 286     4    85
> class=numeric()
> for(i in 1:4){class[i]=data[which(data[,2]==i),]}
Warning messages:
1: In class[i] <- data[which(data[, 2] == i), ] :
  被替换的项目不是替换值长度的倍数
2: In class[i] <- data[which(data[, 2] == i), ] :
  被替换的项目不是替换值长度的倍数
3: In class[i] <- data[which(data[, 2] == i), ] :
  被替换的项目不是替换值长度的倍数
4: In class[i] <- data[which(data[, 2] == i), ] :
  被替换的项目不是替换值长度的倍数
>


就是我想用for循环将每个班级的信息建成一个新的数据
但是遇到了这种情况,请问怎么解决呢?

我想的结果是 我输入  class  运行之后
就会显示
class
[1]
1     1     1    44
2     2     1    53
3     3     1    90
.
.
.
[2]
.
.
.
这样

二维码

扫码加我 拉你入群

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

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

关键词:for循环 如何用 For messages numeric

回帖推荐

cheetahfly 发表于5楼  查看完整内容

我的语句是把不同班的数据分别放在"class1", "class2", "class3", "class4"四个变量中,而没有创造一个"class"变量。 如果是想把不同班的数据放在一个list里面的不同项下,R语言的处理方式是: classn

沙发
cheetahfly 在职认证  发表于 2017-11-4 21:51:56
for (i in 1:4) assign(paste0("class", i), dplyr::filter(data, class == i))
已有 2 人评分学术水平 热心指数 信用等级 收起 理由
小脚大码 + 1 + 1 + 1 精彩帖子
jiangbeilu + 2 精彩帖子

总评分: 学术水平 + 3  热心指数 + 1  信用等级 + 1   查看全部评分

藤椅
XXXjl 发表于 2017-11-5 15:58:42
cheetahfly 发表于 2017-11-4 21:51
for (i in 1:4) assign(paste0("class", i), dplyr::filter(data, class == i))
我把for语句按照你这样修改之后 输入class 会显示0 0 0 0

板凳
XXXjl 发表于 2017-11-5 21:35:56 来自手机
把程序改了下

classn<-c()   #避免和R中自带的函数重复  改了下数据名称

for(i in 1:4){classn[[i]]<-data[which(data[,2]==i),]}

就可以了

报纸
cheetahfly 在职认证  发表于 2017-11-5 21:47:21
XXXjl 发表于 2017-11-5 21:35
把程序改了下

classn
我的语句是把不同班的数据分别放在"class1", "class2", "class3", "class4"四个变量中,而没有创造一个"class"变量。
如果是想把不同班的数据放在一个list里面的不同项下,R语言的处理方式是:
classn <- split(data, f = factor(data$class))

地板
XXXjl 发表于 2017-11-5 21:51:46 来自手机
cheetahfly 发表于 2017-11-5 21:47
我的语句是把不同班的数据分别放在&quot;class1&quot;, &quot;class2&quot;, &quot;class3&quot;, &quot;class4&quot;四个变量中,而没有创造一个&quot;c ...
试了下也可以达到我想要的效果   受教了  谢谢你

7
1074941670 发表于 2020-12-16 10:43:20
cheetahfly 发表于 2017-11-4 21:51
for (i in 1:4) assign(paste0("class", i), dplyr::filter(data, class == i))
这个答主太牛逼了,我好多问题都是看他给别人的答案

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

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