ускорение "забрать первую строку из unlist" в R - PullRequest
2 голосов
/ 29 декабря 2010

Я пытаюсь захватить первую строку из списка, используя явный цикл, как показано в следующем коде:

for (loop.temp in (1:nrow(temp)))
    {temp[loop.temp,"drug_name_mod"] <- unlist(strsplit(temp[loop.temp,"drug_name"]," "))[1]
     print(paste(loop.temp,nrow(temp),sep="/"))
     flush.console()
    }

Но я думаю, что это не очень эффективно, во всяком случае, улучшить его? Спасибо!

1 Ответ

3 голосов
/ 29 декабря 2010

Сначала strsplit строк, это дает вам список строковых векторов, затем переберите его, чтобы получить только первый элемент, и unlist, что:

temp$drug_name_mod <- unlist(lapply(strsplit(temp$drug_name, " "), function(x) x[1]))

sapply делает его немного проще:

temp$drug_name_mod <- sapply(strsplit(temp$drug_name, " "), function(x) x[1])

И вы можете использовать "[" напрямую с 1 в качестве аргумента вместо анонимной функции:

temp$drug_name_mod <- sapply(strsplit(temp$drug_name, " "), "[", 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...