编辑list-within-list对象中所有出现的字符串

时间:2017-06-28 12:40:26

标签: r

示例数据:

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;,在示例代码中定义的两个对象中。

1 个答案:

答案 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"