r - R:更改数据框中的值而不指定数据框的名称
问题描述
我有一个名为mylist的列表,其中包含 9 个字符类型元素。
>dput(mylist)
list("COG_ONTOLOGY", "GOTERM_BP_DIRECT", "GOTERM_CC_DIRECT",
"GOTERM_MF_DIRECT", "INTERPRO", "KEGG_PATHWAY", "PIR_SUPERFAMILY",
"SMART", "UP_KEYWORDS")
我还有 9 个与mylist中的元素同名的数据框。例如,数据帧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)
解决方案
这将有助于确认您的预期输出。
这是实现我认为您正在努力实现的目标的一种方法
``` 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 )
推荐阅读
- c++ - 如何在 C++ 中将 struct 成员的十六进制值写入 unsigned char 数组?
- c# - Unity 不会创建项目,只会创建一个阻止 IntelliSense 工作的 cs 文件
- r - 如何将特定值分配给阶乘数据框?
- c - 仅标头库不使用标头保护。如何在其他头文件中使用该库?
- python - 如何在字典中生成有序的线性组合值?
- python - 如何将我的圆圈移动到预定的 x,y 坐标?
- c# - 如何在 WPF 菜单根项中显示图标?
- firefox - Firefox 不会写入 SSLKEYLOGFILE
- android - 为什么我的 xml 活动中有奇怪的代码?
- python - 如何在 Pyomo 模型中定义链式计算?