示例数据:
ds <- data.frame(q1 = c(1:3), q1b = c(1:3), q1c = c(1:3), q2 = c(1:3), q2b = c(1:3), q2c = c(1:3))
filterList <- list()
filterList[[1]] <- list(var= "q1", filterFor= c("q1b", "q1c"))
filterList[[2]] <- list(var= "q2", filterFor= c("q2b", "q2c"))
我有一个包含调查数据的数据框,以及用于跟踪过滤器的列表内列表设置。例如。 &#34;只询问q1b是否在q1&#34;中给出了某个答案。实际的过滤条件存储在别处,list-within-list设置就是帮助我跟踪依赖性。
我正在处理一个允许我在数据框和列表中同时重命名变量(例如.q1)的函数。换句话说,我需要一个可以重命名字符串&#34; q1&#34;问题1和#34;,在示例代码中定义的两个对象中。
答案 0 :(得分:0)
此函数更改全局变量的值,bouth到data.frame和list
renameF <- function(xold, xnew){
colnames(ds) <<- gsub(xold, xnew, colnames(ds))
filterList <<- lapply(filterList, function(x)
lapply(x, function(y) gsub(xold, xnew, y)))
return(NULL)
}
renameF("q1", "Question1")
ds
Question1 Question1b Question1c Question2 Question2b Question2c
1 1 1 1 1 1 1
2 2 2 2 2 2 2
3 3 3 3 3 3 3
filterList
[[1]]
[[1]]$var
[1] "Question1"
[[1]]$filterFor
[1] "Question1b" "Question1c"
[[2]]
[[2]]$var
[1] "Question2"
[[2]]$filterFor
[1] "Question2b" "Question2c"