data=data.frame("Cluster"=c('100-0-1-1-1-0-0-1','100-0-1-1-1-0-0-2','100-0-1-1-1-0-0-3','100-0-1-1-1-0-0-4','101-1-3-1-1-0-0-1','101-1-3-1-1-0-0-2','101-1-3-1-1-0-0-3','101-1-3-1-1-0-0-4'),
"Start"=c('T1','T2','T3','T4','T1','T2','T3','T4'),
"T1"=c(0.99666092,0.955408575,0.591360265,0,0.842613486,0.249979248,0.018732018,0),
"T2"=c(0.002849352,0.034098921,0.263485347,0,0.100172896,0.371004018,0.347065989,0),
"T3"=c(0.000270287,0.005809104,0.080614609,0,0.024058249,0.160022544,0.268845885,0),
"T4"=c(0.00021944,0.004683401,0.06453978,1,0.03315537,0.21899419,0.365356108,1))
k=nchar(as.character(data[1,1]))
k1=unique(substr(data$Cluster, 1, k-2))
library(pracma)
#do this for each k1 and store in 'data1' which is identical to data but with the updated values
pracma::rootm(data[,c('T1','T2','T3','T4')], p = 6)
У меня есть «данные» в качестве фрейма данных. Он содержит «Кластер», обозначаемый последовательностью значений; последнее значение указывает позицию «Старт». Затем у меня есть «T1» - «T4», которые являются ставками. Для каждого уникального кластера (без последнего di git) я должен sh найти 6-ю root матрицы, как показано выше, и сохранить эту информацию вместе с информацией «Кластер» и «Старт» в новых данных. кадр, 'data1'.
Есть ли эффективный способ сделать это без использования циклов? Итак, найдем 6 root квадратной матрицы для каждого уникального «Кластера» в «k1» и сохраним эту информацию в новом data.frame?