2017-02-13 17 views
1

У меня есть следующий список строк:Заменить элементы списка по имени с другим списком

l.1 = list(a = "aaa", b = "111", c = "a1a", d = "222") 

Я хочу, чтобы преобразовать строки с цифрами только для числовых записей. Для этого я использую функцию импортированные из другого вопроса here:

check.digits <- function(x){ grepl('^(\\d+)$' , x) } 

При нанесении на l.1 он возвращает строки только с цифрами:

l.2 = lapply(l.1[check.digits(l.1)], as.numeric) 

> l.2 
$b 
[1] 111 

$d 
[1] 222 

Как заменить элементы в l.1 те, в l.2 ?

Желаемый результат будет:

> l.1 
$a 
[1] "aaa" 

$b 
[1] 111 

$c 
[1] "a1a" 

$d 
[1] 222 
+3

'l.1 [имен (L.2)] <- l.2' –

+0

Он работает. Благодаря! – mattek

+1

Вы также можете рассмотреть логическое индексирование, то есть 'all_digit <- check.digits (l.1); l.1 [all_digit] <- lapply (l.1 [all_digit], as.numeric) ' – Benjamin

ответ

2

Мы можем использовать

l.1[names(l.2)] <- l.2