Я прочитал все записи «string to variable name», но ни одна из них не охватывала мою конкретную проблему. У меня есть список векторов (данные последовательности ДНК), сделанные с использованием пакета seqinr 'read.fasta'. У меня есть кадр данных вариантов и их местоположение, и я хочу преобразовать элементы вектора списка в местах, указанных в кадре данных, в их альтернативные значения. На индивидуальной основе, это может быть сделано с помощьюR конвертировать строку в имя переменной и заменить переменную
list$name[number] <- alternate.character
# I tried
for (i in 1:length(df$CHROM))
if (is.na(df$Call[i])) {next} else {get(paste("test$",df$CHROM[i],"[",df$POS[i],"]",sep="")) <- df$Call[i]}
# example data
test <- list("One" = c("a","t","a","g","c"),
"Two" = c("g","a","t","t","a","c","a"))
df <- data.frame("CHROM"=c(rep("One",2),rep("Two",3)),
"POS" = c(2,4,1,3,6),
"REF" = c("t","g","g","t","c"),
"ALT" = c("a","a","t","g","t"),
"Call" = c("T","A","G",NA,"T"))
Но «получить» возвращает вектор элемент из списка и не позволяет мне назначить его в качестве варианта в родительском списке.
Я хочу список, чтобы перейти от
$One
[1] "a" "t" "a" "g" "c"
$Two
[1] "g" "a" "t" "t" "a" "c" "a"
в
$One
[1] "a" "T" "a" "A" "c"
$Two
[1] "G" "a" "t" "t" "a" "T" "a"
Для тестовых данных это не проблема, потому что вы можете просто сделать это индивидуально, но реальные данные составляет более 10000 последовательностей и более 100 000 вариантов. Бонусные баллы, если вы можете его векторизовать, у меня недостаточно опыта, чтобы применить функции, чтобы заставить его работать с информацией из списка и кадра данных в одно и то же время.
sessionInfo()
R version 3.0.2 (2013-09-25)
Platform: x86_64-pc-linux-gnu (64-bit)
locale:
[1] LC_CTYPE=en_GB.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_GB.UTF-8 LC_COLLATE=en_GB.UTF-8
[5] LC_MONETARY=en_GB.UTF-8 LC_MESSAGES=en_GB.UTF-8
[7] LC_PAPER=en_GB.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] seqinr_3.0-7
loaded via a namespace (and not attached):
[1] tools_3.0.2
ли REF и АЛТ столбцов здесь неуместен? – Spacedman
На самом деле, да, они не имеют отношения к этой части, извините, они раньше использовались для вызова символа «Вызов». – JeremyS
Продолжая свой подход, смотрите что-то вроде 'for (i в seq_len (nrow (df))) {if (! Is.na (as.character (df $ Call [i]))) test [[as.character (df $ CHROM [i])]] [as.numeric (as.character (df $ POS [i]))] <- as.character (df $ Call [i])} '; 'test' –