【发布时间】:2021-03-16 19:30:27
【问题描述】:
大家好,我需要帮助才能按列组遍历数据框。
这是一个数据框的例子
Group Species Values
1 G1 Cattus_cattus Val1
2 G1 Cattus_cattus Val2
3 G1 Cattus_cattus Val3
4 G2 Canis_lupus Val4
5 G2 Canis_lupus Val5
6 G3 Griseus_lupa Val6
7 G4 Griseus_lupa Val7
我想:
1 - 循环 c(df$Group,df$Species)
2 - 获取df$Values 并将其存储为vector
3 - 将该向量放入名为afunction的函数中
4 - 使用anotherfunction 打开一个treefile,其名称为df$Group name
5 - 获取该函数的 output value 并将其添加到 new_column
所以这里是代码应该做什么的一个例子:
第一组是G1,Cattus_cattus:
Group Species Values
1 G1 Cattus_cattus Val1
2 G1 Cattus_cattus Val2
3 G1 Cattus_cattus Val3
然后我用treefile <- anotherfunction(G1)打开treefile
然后我生成output_value<-afunction(treefile,c("Val1","Val2","Val3))等输出值
然后output_value = 30
所以我将 30 添加到 df 中:
Group Species Values new_column
1 G1 Cattus_cattus Val1 30
2 G1 Cattus_cattus Val2 30
3 G1 Cattus_cattus Val3 30
如果 Group 中只有一行,那么我什么都不做并添加一个 NA。
请注意,它当然是一个不存在的函数,因此您无法重现该示例。
我们应该得到类似的东西(new_column 的值在这里是随机的)。
Group Species Values new_column
1 G1 Cattus_cattus Val1 30
2 G1 Cattus_cattus Val2 30
3 G1 Cattus_cattus Val3 30
4 G2 Canis_lupus Val4 21
5 G2 Canis_lupus Val5 21
6 G3 Griseus_lupa Val6 NA
7 G4 Griseus_lupa Val7 NA
请问有人有想法吗? 到目前为止,我知道如何使用 for 循环遍历数据帧,但在这里我不知道如何处理由 2 列组成的组..
数据
structure(list(Group = structure(c(1L, 1L, 1L, 2L, 2L, 3L, 4L
), .Label = c("G1", "G2", "G3", "G4"), class = "factor"), Species = structure(c(2L,
2L, 2L, 1L, 1L, 3L, 3L), .Label = c("Canis_lupus", "Cattus_cattus",
"Griseus_lupa"), class = "factor"), Values = structure(1:7, .Label = c("Val1",
"Val2", "Val3", "Val4", "Val5", "Val6", "Val7"), class = "factor")), class = "data.frame", row.names = c(NA,
-7L))
【问题讨论】: