找回密码
 立即注册
查看: 6076|回复: 2

数据框列名传参问题,即怎么样在自定义的列上取自定义的值的问题

[复制链接]
发表于 2014-10-22 14:27:04 | 显示全部楼层 |阅读模式
求助各位大牛:怎么样在数据框下,在自定义的列上取自定义的值,筛选数据框?
例如:
数据框  aa<- data.frame(x=c(1,2,3,4,5),sort=c("a","b","a","a","b"))
> aa
        x  sort
1     1    a
2     2    b
3     3    a
4     4    a
5     5    b

定义一个函数gets:可以在数据框中,在特定的列下,取出特定的值,筛选出数据框:


> gets<- function(mydata,label,value)      # mydata是原始数据框,label是原始数据框中我要计算的特定列名,value是特定列名下的特定值
+  {
+   mysorts<- as.vector( unique( mydata[c( label )]))
+   n_sorts<- as.integer( length( mysorts))
+   sub<- sapply(1:n_sorts,function( i )
+     {
+       sub<- mydata[which(mydata[c( label )]==mysorts[ i ]),c(value)]
+    })
+ }


运行gets():

> gets(aa,"sort","x")

然后就报错:
Error in Ops.data.frame(mydata[c(label)], mysorts[i]) :
  == only defined for equally-sized data frames


求大牛指教!!谢啦!!



回复

使用道具 举报

发表于 2014-10-31 21:38:05 | 显示全部楼层
试试subset()
回复

使用道具 举报

发表于 2014-11-6 16:11:27 | 显示全部楼层
我再 补充一个实际例子{:soso_e100:}
  1. aa<- data.frame(x=c(1,2,3,4,5),sort=c("a","b","a","a","b"))
  2. > aa
  3.   x sort
  4. 1 1    a
  5. 2 2    b
  6. 3 3    a
  7. 4 4    a
  8. 5 5    b
  9. > subset(aa,x>=3)
  10.   x sort
  11. 3 3    a
  12. 4 4    a
  13. 5 5    b
  14. > subset(aa,x>=3,select=sort)
  15.   sort
  16. 3    a
  17. 4    a
  18. 5    b
  19. >
复制代码
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|R语言中文网

GMT+8, 2024-11-25 14:55 , Processed in 0.031410 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表