在R中的for循环中使用粘贴函数编写ifelse语句

时间:2013-11-26 22:12:17

标签: r loops if-statement for-loop paste

所以我有50个变量值,范围从1到4,我想要计算1到2的数量,以及3或4中的数量。

即。 abc1 = 2,abc2 = 2,... abc50 = 3

以下是我的代码

#Create new variable to store the counted number to

abc.low=0
abc.high=0

这是我坚持的代码(它没有工作)

for (i in 1:50){
ifelse (paste("abc",i,sep="")==1|paste("abc",i,sep="")==2, 
(abc.low<-abc.low<-1),(abc.low<-abc.low))
}

for (i in 1:50){
ifelse (paste("abc",i,sep="")==3|paste("abc",i,sep="")==4, 
(abc.high<-abc.high<-1),(abc.high<-abc.high))
}

我假设粘贴功能不适合我想要做的事情。

即)

abc1=3

abc1==3
#True

paste("abc",1,sep="")==3
# False

其中粘贴函数应该为我的目的返回true。

感谢您的投入!

2 个答案:

答案 0 :(得分:3)

试试这个例子:

table(unlist(mget(paste0('abc',1:50))))
  • mget创建一个变量列表,unlist将其变换为向量。
  • table给出了每个值的出现,例如:

     1  2  3  4 
     14 13 13 10 
    

答案 1 :(得分:1)

这将对您有所帮助:

groups = rbinom(32, n = 50, prob = 0.4)
tapply(groups, groups, length)

以上tapply函数返回组中元素的数量