Как установить имя для вектора, разделив элемент? - PullRequest
1 голос
/ 13 июля 2020
v<-c('f1=q1+q2+q3','f2=q4+q5+q6','f03=q7+q8')

Я хочу разделить указанный выше элемент вектора, strsplit('f1=q1+q2+q3', '='), и использовать f1, f2, f3 в качестве имени вектора, ожидаемый результат, как показано ниже:

> c(f1='q1+q2+q3',f2='q4+q5+q6',f3='q7+q8')
        f1         f2         f3 
"q1+q2+q3" "q4+q5+q6"    "q7+q8" 

Как это сделать?

Ответы [ 2 ]

2 голосов
/ 13 июля 2020

Мы можем использовать read.table для чтения данных в два столбца, указав sep как =, а затем создать именованный вектор с setNames, используя эти столбцы

with(read.table(text = v, sep="="), setNames(V2, V1))
#     f1         f2        f03 
#"q1+q2+q3" "q4+q5+q6"    "q7+q8" 

Или, если мы используем strsplit, привяжите их к одному data.frame с помощью rbind, а затем установите имена

out <- do.call(rbind.data.frame, strsplit(v, "=", fixed = TRUE))
setNames(out[[2]], out[[1]])
1 голос
/ 13 июля 2020

Вы можете попробовать это:

#names
v1 <- do.call(rbind,lapply(strsplit(v, '='),function(x) x[1]))
#formula
v2 <- do.call(cbind,lapply(strsplit(v, '='),function(x) x[2]))
#create vector
vectoro <- v2[1,]
names(vectoro) <- v1[,1]

       f1         f2        f03 
"q1+q2+q3" "q4+q5+q6"    "q7+q8"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...