Прочитать в файле и установить поля как переменные в R - PullRequest
0 голосов
/ 31 января 2019

Я пытаюсь прочитать файл, и R устанавливает каждую пару данных в качестве переменной среды.

У меня есть входной файл, который поступает из Интернета с данными ниже.У него есть как числовые, так и символьные переменные, которые необходимо прочитать. Это то, где я зацикливаюсь, так как я могу только представить их как одно или другое, что приводит к ошибкам assign или do.call, когда это происходит.поражает символы, которые классифицируются как числовые, или наоборот.

Любые идеи?

input file "input":
user <- "johndoe", date <- "1-30-2019", run <- 1, scoring <- "default", 
high_cutoff <- 70, low_cutoff <- 15, bg1 <- 12, bg2 <- 12, bg3 <- 12, 
group_cut <- 60, stbg <- "no", factor <- 25, rest <- 2, 
loo_enable <- "no"

wd <- getwd() 
phpvars <- as.data.frame(t(read.table(paste0(wd, "/input"), sep = ",")))


#attempt 1 - reads everything in as character
for (i in phpvars$V1){
 x<- t(as.data.frame(strsplit(i," <- ")))
 assign(x[1,1],(x[1,2]))
}

#attempt 2 - tries to detect type of each data point as it comes in, and 
#assign as. (numeric or character)

for (i in phpvars$V1){
 x<- t(as.data.frame(strsplit(i," <- ")))
 type <- typeof(x[1,2])
 d <- paste0("as.", type)
 e <- x[1,2]
 assign(x[1,1],paste(d,(e)))
 }



#alternate to assign - has same problems though
do.call("<-",list(x[1,1],x[1,2]))

Желаемый вывод в качестве переменных среды:

 user <- "johndoe"
 date <- "1-30-2019"
 run <- 1
 scoring <- "default"
 high_cutoff <- 70
 low_cutoff <- 15
 bg1 <- 12
 bg2 <- 12
 bg3 <- 12
 group_cut <- 60
 stbg <- "no"
 factor <- 25
 rest <- 2
 loo_enable <- "no"

Есть ли способ (лучший способ) читать данные и устанавливать их как переменные среды?

1 Ответ

0 голосов
/ 31 января 2019

У вас уже есть замечательные цитаты.Воспользуйтесь этим, указав, что ваша входная строка заключена в кавычки с аргументом quote = "" при использовании функции read.table():

wd <- getwd() 
phpvars <- as.data.frame( t( read.table( paste0(wd, "/input") ,
                                         sep = ",",   
                                         quote = "" ) ) )

Затем вам нужно просто проанализировать каждую строку таблицы phpvars и оценить их поиспользуя функции parse() и eval() соответственно:

 for(i in phpvars$V1){

     eval( parse( text = as.character(i) ) )
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...