首页 > 解决方案 > R:更改数据框中的值而不指定数据框的名称

问题描述

我有一个名为的列表,其中包含 9 个字符类型元素。

>dput(mylist)
list("COG_ONTOLOGY", "GOTERM_BP_DIRECT", "GOTERM_CC_DIRECT", 
"GOTERM_MF_DIRECT", "INTERPRO", "KEGG_PATHWAY", "PIR_SUPERFAMILY", 
"SMART", "UP_KEYWORDS")

我还有 9 个与中的元素同名的数据框。例如,数据帧COG_ONTOLOGY具有以下结构。

COG_ONTOLOGY <- data.frame(
  name = c("A", "B", "C", "D", "E"),
  value = as.numeric(0))

在数据帧COG_ONTOLOGY中,我需要将 A 的值增加 1,但没有指定数据帧的名称和“A”。我试过这个,但它似乎不起作用。

assign(get(mylist[[1]])[1, "value"], get(mylist[[1]])[1, "value"] + 1)

标签: rdataframe

解决方案


这将有助于确认您的预期输出。

这是实现我认为您正在努力实现的目标的一种方法

``` r
COG_ONTOLOGY <- data.frame(
  name = c("A", "B", "C", "D", "E"),
  value = as.numeric(0))


my_list <- as.list(unlist(c("COG_ONTOLOGY", "GOTERM_BP_DIRECT")))

df <- get(my_list[[1]])

df$value[df$name == "A"] <- df$value[df$name == "A"] + 1

assign(my_list[[1]], df)

COG_ONTOLOGY
#>   name value
#> 1    A     1
#> 2    B     0
#> 3    C     0
#> 4    D     0
#> 5    E     0

reprex 包于 2021-08-22 创建 (v2.0.0 )


推荐阅读