Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- library(data.table)
- library(dplyr)
- library(magrittr)
- N = 10
- T = 5
- nItem = 4
- m = matrix(rbinom(N*T*nItem, 15, 0.4), N)
- dat = data.table(id = 1:nrow(m), m) %>%
- setnames(paste0("V",1:20), paste0(rep(LETTERS[1:nItem],,, T),
- rep(1:T, nItem)))
- varChecking = names(dat)[grepl("[A-Z]1", names(dat))]
- f = function(x) ifelse(x < 5, 0, x)
- dat_out = mutate_each_(dat, funs(f), varChecking)
- namesWorking = gsub("([A-Z])1", "\\1", varChecking)
- varsWorking = paste0(rep(namesWorking,,,T-1), rep(2:T,nItem))
- ## method 1
- cmd = paste0('ifelse(', rep(namesWorking,,,T-1), '1<5,0,',
- varsWorking, ')')
- mutate_(dat_out, .dots= setNames(lapply(cmd, lazyeval:::interp), varsWorking))
- ## method 2
- eval(parse(text = paste0('dat_out=mutate(dat_out,',
- paste0(varsWorking, '=ifelse(', rep(namesWorking,,,T-1), '1<5,0,',
- varsWorking, ')', collapse = ","), ')')))
- ## 然後就回到原本的左移問題~~~
Advertisement
Add Comment
Please, Sign In to add comment