R Data.table манипуляции - PullRequest
0 голосов
/ 11 июля 2019

У меня есть таблица данных R следующим образом:

    ColName   ColContent
    1          Caxs are cool
    2          Vabs are awesome

Я хочу создать ColContent таким образом, чтобы x был заменен на r, а b был заменен на n,выдача результата

    ColName   ColContent
      1        Cars are cool
      2        Vans are awesome

Как это сделать с таблицей данных?Я попытался lapply и назначить результат, а также sapply, но у меня были проблемы с обоими подходами.

Также попытался,

colreplacement ='ColContent' #column name is stored in variable

dt = data.table name, где данные.

dt[,get(colreplacement) := lapply(dt[,get(colreplacement), function(x) str_replace_all(x, c("x"="r","b"="n")))]

Но это привело к ошибке:

Ошибка в get (colreplacement): объект 'colreplacement' не найден

Мысли о том, как заставить это работать?Кажется, он не разрешает имя переменной в ее значение в lapply, так как только dt[,get(colreplacement)] работает нормально.

Ответы [ 2 ]

0 голосов
/ 12 июля 2019

Это может быть более элегантное решение.

library('stringr')
dt[, ColContent := str_replace_all(ColContent, c('x'='r', 'b'='n'))]
0 голосов
/ 11 июля 2019
stringreplace=function(x){
return(str_replace_all(x,c("x"="r","b"="n")))}

dt[[colreplacement]]=sapply(dt[[colreplacement]],stringreplace)
```
this did the trick

...