全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
3341 6
2017-11-04
> 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]
.
.
.
这样

二维码

扫码加我 拉你入群

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

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

全部回复
2017-11-4 21:51:56
for (i in 1:4) assign(paste0("class", i), dplyr::filter(data, class == i))
二维码

扫码加我 拉你入群

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

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

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
二维码

扫码加我 拉你入群

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

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

2017-11-5 21:35:56
把程序改了下

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

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

就可以了
二维码

扫码加我 拉你入群

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

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

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))
二维码

扫码加我 拉你入群

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

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

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 ...
试了下也可以达到我想要的效果   受教了  谢谢你
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群