Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更改R中列表列表列表中的特定名称_R_List - Fatal编程技术网

更改R中列表列表列表中的特定名称

更改R中列表列表列表中的特定名称,r,list,R,List,我在R中有一个列表。我创建了以下示例列表来说明我的问题: example_list <- list( list(id1 = 123, id2 = 321, school = 'notting'), list(id3 = 12, house = 'Y'), list(id4 = 18) ) 虽然我的函数由于某种原因无法工作,而且方法似乎有点不成熟,但有什么建议吗?我们将列表元素的名称

我在R中有一个列表。我创建了以下示例列表来说明我的问题:

example_list <- list(
                  list(id1 = 123, id2 = 321, school = 'notting'),
                  list(id3 = 12, house = 'Y'),
                  list(id4 = 18)
)

虽然我的函数由于某种原因无法工作,而且方法似乎有点不成熟,但有什么建议吗?

我们将
列表
元素的
名称
替换为'id',然后返回
列表
元素

sol_list <- lapply(example_list, function(x) {
                   names(x)[grep("id", names(x))] <- "id"
                    x})
identical(solution_list, sol_list)
#[1] TRUE

我们的名单里有两个相同的名字<代码>列表(id=123,id=321…@zx8754是的,也许这是一个糟糕的例子,我的实际数据集在同一个列表中有多个id,具有相同的值
列表(id1=123,id2=123)
etcUnderstand,您将如何按名称对列表中的第二个
id
进行寻址?@zx8754完成此步骤后,我已删除了重复项如果您要删除重复项,则似乎无需更改列表名称。
replace_names<- function(x, r) {
indices <- grepl(r, names(x))
if(length(indices) > 0) {names(x)[indices] <- r}
lapply(example, replace_names, r = "id")
sol_list <- lapply(example_list, function(x) {
                   names(x)[grep("id", names(x))] <- "id"
                    x})
identical(solution_list, sol_list)
#[1] TRUE
lapply(example_list, function(x) setNames(x, sub("\\d+", "", names(x))))