Birisi bazı örnek olarak konsol çıktısı gönderdi. (Bu çok şey oluyor ve vektörler ve veri çerçeveleri için çıktı çıktılarını dönüştürmek için stratejilerim var.) Bunu gerçek bir R listesine ayrıştırmak için şık bir yöntemin olup olmadığını merak ediyorum. Listenin konsol çıktısını gerçek bir R listesine dönüştürün
test <- "[[1]]
[1] 1.0000 1.9643 4.5957
[[2]]
[1] 1.0000 2.2753 3.8589
[[3]]
[1] 1.0000 2.9781 4.5651
[[4]]
[1] 1.0000 2.9320 3.5519
[[5]]
[1] 1.0000 3.5772 2.8560
[[6]]
[1] 1.0000 4.0150 3.1937
[[7]]
[1] 1.0000 3.3814 3.4291"
Bu
adlı ve un-adlandırılmış düğümlerle bir örnektir: Benstr
listelerini nasıl işleyeceğini kod aracılığıyla çalıştık
L <-
structure(list(a = structure(list(d = 1:2, j = 5:6, o = structure(list(
w = 2, 4), .Names = c("w", ""))), .Names = c("d", "j", "o"
)), b = "c", c = 3:4), .Names = c("a", "b", "c"))
> L
$a
$a$d
[1] 1 2
$a$j
[1] 5 6
$a$o
$a$o$w
[1] 2
$a$o[[2]]
[1] 4
$b
[1] "c"
$c
[1] 3 4
, ama aslında ters dönüşüm yapıyor. Bunun, bu mantık gibi bir şeye yinelenen bir çağrı olacak bu satırlar boyunca bir şekilde yapılandırılması gerektiğine inanıyorum, çünkü listeler (son indeksten önceki "$" olacaktır) veya adsız olarak adlandırılabilir (bu durumda) içine bir dizi olacak
parseTxt <- function(Lobj) {
#setup logic
# Untested code... basically a structure to be filled in
rdLn <- function(Ln) {
for(ln in length(inp)) {
m <- gregexpr("\\[\\[|\\$", "$a$o[[2]]")
separators <- regmatches("$a$o[[2]]", m)
curr.nm=NA
if (tail(separators, 1) == "$"){
nm <- sub("^.+\\$","",ln)
if(!nm %in% curr.nm){ curr.nm <-c(nm, curr.nm) }
} else { if (tail(separators, 1) == '[['){
# here need to handle "[[n]]" case
} else { and here handle the "[n]" case
}
}
}
Cidden, 'dput' çıktısını isteyin. Eğer bunu sağlamazlarsa, reddetmek ve devam etmek. * * * Lapply (readLines (textConnection (gsub ("\ n (? = \ N) | \\ [\\ [\\ d * \\] \\] \ n | \\ [\ gibi bir canavarlığı kullanabilirsiniz \ d * \\] "," ", test, perl = TRUE))), işlev (x) tarama (textConnection (x))), ama yapmazdım. – Roland
Roland'a katılıyorum. Alternatif canavarlık 'read.delim'dir (text = gsub (" \\ [+ \\ d + \\] + "," ", test), header = FALSE, sep =" ")' dır ancak sadece bu durum için çalışır. – Andrie
@Andrie. Burada bile çalışmıyor. 7 eleman listesinden ziyade 3 sütun veri çerçevesi sağlar. –