我有一个数据库,其中的一列包含以字符串形式的物种名称:
plant.first.id$sp.lst[42]
返回:
[1] ['Trema lamarckianum', 'Parasponia rigida', 'Trema tomentosum', 'Trema micranthum', 'Cannabis sativa']
我想用plant.first.id$sp.lst
的整个列,然后将值转换成我可以操纵的向量。
例如,我想要这个:
> plant.first.id$sp.lst[3:5]
[1] []
[2] ['Ficus carica', 'Aphananthe philippinensis', 'Ficus insipida', 'Aphananthe monoica', 'Castilla elastica', 'Maclura cochinchinensis', 'Maclura fruticosa']
[3] ['Artocarpus tamaran']
dput(plant.first.id$sp.lst[3:5])
structure(c(14L, 7L, 1L), .Label = c("['Artocarpus tamaran']",
"['Artocarpus thailandicus']", "['Boronia algida', 'Zanthoxylum coreanum', 'Citrus reticulata']",
"['Cissus integrifolia', 'Cissus populnea', 'Cissus hastata', 'Cissus trianae', 'Cissus penninervis', 'Cissus assamica']",
"['Cryptandra amara', 'Broussonetia papyrifera', 'Serichonus gracilipes', 'Colubrina asiatica', 'Artocarpus tamaran', 'Artocarpus chama', 'Artocarpus thailandicus', 'Artocarpus rubrovenius', 'Gouania mauritiana']",
"['Enterolobium gummiferum']", "['Ficus carica', 'Aphananthe philippinensis', 'Ficus insipida', 'Aphananthe monoica', 'Castilla elastica', 'Maclura cochinchinensis', 'Maclura fruticosa']",
"['Maclura cochinchinensis']", "['Pouteria multiflora', 'Diospyros toposia', 'Van-royena castanosperma', 'Micropholis guyanensis', 'Pycnandra comptonii', 'Chrysophyllum venezuelanense']",
"['Pouteria multiflora', 'Van-royena castanosperma', 'Chrysophyllum venezuelanense', 'Pycnandra comptonii', 'Micropholis guyanensis']",
"['Trema lamarckianum', 'Cannabis sativa', 'Trema tomentosum', 'Parasponia rigida', 'Ficus annulata', 'Trema micranthum', 'Celtis iguanaea', 'Artocarpus thailandicus']",
"['Trema lamarckianum', 'Ficus annulata', 'Parasponia rigida', 'Trema tomentosum', 'Trema micranthum', 'Cannabis sativa']",
"['Trema lamarckianum', 'Parasponia rigida', 'Trema tomentosum', 'Trema micranthum', 'Cannabis sativa']",
"[]"), class = "factor")
成为类似:
c("")
c('Ficus carica', 'Aphananthe philippinensis', 'Ficus insipida', 'Aphananthe monoica', 'Castilla elastica', 'Maclura cochinchinensis', 'Maclura fruticosa')
c('Artocarpus tamaran')
以列表形式。
我已经尝试过:
strsplit(as.vector(plant.first.id$sp.lst[42]),split = ",")
但是它不可用:
[[1]]
[1] "['Trema lamarckianum'" " 'Parasponia rigida'" " 'Trema tomentosum'" " 'Trema micranthum'" " 'Cannabis sativa']"
也这样:
gsub("[[(]", "(", plant.first.id$sp.lst[[42]])
gsub("]", ")", plant.first.id$sp.lst[[42]])
但仍然不是很有帮助...
[1] "('Trema lamarckianum', 'Parasponia rigida', 'Trema tomentosum', 'Trema micranthum', 'Cannabis sativa']"
[1] "['Trema lamarckianum', 'Parasponia rigida', 'Trema tomentosum', 'Trema micranthum', 'Cannabis sativa')"
使用strplit
删除多余的空格和撇号>>
y <- sapply(x, gsub, pattern = "^\\['?|'?]$", replacement = "")
strsplit(y, "', '")
[[1]]
character(0)
[[2]]
[1] "Ficus carica" "Aphananthe philippinensis" "Ficus insipida" "Aphananthe monoica"
[5] "Castilla elastica" "Maclura cochinchinensis" "Maclura fruticosa"
[[3]]
[1] "Artocarpus tamaran"