首页 > 解决方案 > 将列转换为数据框中的列表

问题描述

我有一个数据框,例如

df

COL1 COL2 
A    "[Lasius_niger]" 
B    "[Canis_lupus,Feis_cattus]"
C    "[Cattus_stigmatizans,Cattus_cattus"]
D    "[Apis_mellifera]"

在我的代码中,我将每一行迭代df$COL2到一个命令中,我需要该内容是一个列表。所以我需要将其转换df$COL2为数据框内的列表

所以我应该得到类似的东西:

COL1 COL2 
A    "Lasius_niger" 
B    "Canis_lupus","Feis_cattus"
C    "Cattus_stigmatizans","Cattus_cattus"
D    "Apis_mellifera"

有人有想法吗?

标签: rdataframedplyr

解决方案


使用逗号删除左方括号和右方括号gsub并拆分字符串。

df$COL2 <- strsplit(gsub('\\[|\\]', '', df$COL2), ',')
str(df)
#'data.frame':  4 obs. of  2 variables:
# $ COL1: chr  "A" "B" "C" "D"
# $ COL2:List of 4
#  ..$ : chr "Lasius_niger"
#  ..$ : chr  "Canis_lupus" "Feis_cattus"
#  ..$ : chr  "Cattus_stigmatizans" "Cattus_cattus"
#  ..$ : chr "Apis_mellifera"

数据

df <- structure(list(COL1 = c("A", "B", "C", "D"), COL2 = c("[Lasius_niger]", 
"[Canis_lupus,Feis_cattus]", "[Cattus_stigmatizans,Cattus_cattus]", 
"[Apis_mellifera]")), class = "data.frame", row.names = c(NA, -4L))

推荐阅读