g**r 发帖数: 425 | 1 我的DATA:
a=matrix(c(3,4,5,6,7,6),nrow=2,byrow=TRUE)
我想要的结果:
b=matrix(0,nrow=2,ncol=10)
for(i in 1:nrow(a))for(j in 1:ncol(a))
b[i,a[i,j]]=1+b[i,a[i,j]]
但觉得我的这个方法也太土了。R玩的不熟,大家帮忙。 | t**i 发帖数: 688 | 2 I don't get it. Provide more info, please. | s*****n 发帖数: 2174 | 3 b <- matrix(0, nrow = 2, ncol = 10)
for (i in 1:nrow(a)){
temp <- tapply(a[i,], a[i, ], length)
b[i, as.numeric(names(temp))] <- temp
}
【在 g**r 的大作中提到】 : 我的DATA: : a=matrix(c(3,4,5,6,7,6),nrow=2,byrow=TRUE) : 我想要的结果: : b=matrix(0,nrow=2,ncol=10) : for(i in 1:nrow(a))for(j in 1:ncol(a)) : b[i,a[i,j]]=1+b[i,a[i,j]] : 但觉得我的这个方法也太土了。R玩的不熟,大家帮忙。
| f***a 发帖数: 329 | 4 一行搞定 :D
t(apply(a,1,function(t)table(c(t,1:ncol(b)))-1)) | g**r 发帖数: 425 | 5 酷!
稍微改进了一下,最后用的这个:
t(apply(a,1,function(t)tabulate(t,ncol(b))
【在 f***a 的大作中提到】 : 一行搞定 :D : t(apply(a,1,function(t)table(c(t,1:ncol(b)))-1))
| g**r 发帖数: 425 | 6 谢谢。结果是对的。
我也把tapply学了一下,貌似tapply(a[i,], a[i, ], length)和楼下童鞋用的
table 函数的结果是一样的。
【在 s*****n 的大作中提到】 : b <- matrix(0, nrow = 2, ncol = 10) : for (i in 1:nrow(a)){ : temp <- tapply(a[i,], a[i, ], length) : b[i, as.numeric(names(temp))] <- temp : }
|
|