Как отделить строку символов и прочитать ее в R как вектор? - PullRequest
3 голосов
/ 17 февраля 2020

У меня есть база данных со столбцом, который содержит название вида в строке символов:

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')"

1 Ответ

3 голосов
/ 17 февраля 2020

Использование 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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...