An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20111123/734dd176/attachment.pl>
zeros to NA's - faster
3 messages · Ben quant, Jorge I Velez, Dennis Murphy
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20111123/0b2ba0f9/attachment.pl>
Matrix multiplication, maybe?
all_data %*% iu
a b c [1,] 1 4 0 [2,] 2 5 0 [3,] 3 6 0 I have no idea if this is a general solution or not, but it works in this case. If you need something else, perhaps a more realistic example would help. Dennis
On Wed, Nov 23, 2011 at 11:41 AM, Ben quant <ccquant at gmail.com> wrote:
Hello,
Is there a faster way to do this? Basically, I'd like to NA all values in
all_data if there are no 1's in the same column of the other matrix, iu.
Put another way, I want to replace values in the all_data columns if values
in the same column in iu are all 0. This is pretty slow for me, but works:
?all_data = matrix(c(1:9),3,3)
?colnames(all_data) = c('a','b','c')
all_data
? ? a b c
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
?iu = matrix(c(1,0,0,0,1,0,0,0,0),3,3)
?colnames(iu) = c('a','b','c')
iu
? ? a b c
[1,] 1 0 0
[2,] 0 1 0
[3,] 0 0 0
? ?fun = function(x,d){
? ? ?vals = d[,x]
? ? ?i = iu[,x]
? ? ?if(!any(i==1)){
? ? ? ?vals = rep(NA,times=length(vals))
? ? ?}else{
? ? ? ?vals
? ? ?}
? ? ?vals
? ?}
? ?all_data = sapply(colnames(iu),fun,all_data)
all_data
? ? a b ?c [1,] 1 4 NA [2,] 2 5 NA [3,] 3 6 NA ...again, this work, but is slow for a large number of columns. Have anything faster? Thanks, ben ? ? ? ?[[alternative HTML version deleted]]
______________________________________________ R-help at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.