R преобразовать вектор символов в символьный и числовой

У меня есть вектор:

 > vek
[1] "0"    "0"    "NULL" "0"    "0"    "0"    "0"   "NULL"

Я хочу преобразовать вектор в числовой, где число и строка, где строка

> vek
[1] 0    0    "NULL"  0    0    0    0   "NULL"

Является ли это возможным? Как я могу это сделать?


person Marta    schedule 07.03.2014    source источник
comment
Я не думаю, что это возможно. по крайней мере, не содержаться в одном векторе. но зачем тебе это? Я уверен, что для вашей цели есть более эффективное решение   -  person Sarunas    schedule 07.03.2014
comment
Мне нужно поместить этот вектор в список, а затем список в json. Я хочу, чтобы числовые значения были без   -  person Marta    schedule 07.03.2014


Ответы (1)


В одном векторе не может быть элементов разных типов. Но вы можете сделать это в списке. Возможно, вы могли бы преобразовать свой вектор в список напрямую.

vekl <- as.list(vek)

for (i in 1: length(vekl)){
  temp <- as.numeric(vekl[[i]])
  if (! is.na(temp))
    vekl[[i]] <- temp
}

Чтобы избежать предупреждений, используйте это: suppressWarnings( temp <- as.numeric(vekl[[i]]) ). Он игнорирует все предупреждения, поэтому вы должны быть внимательны при использовании этой функции...

person Pop    schedule 07.03.2014
comment
Это хорошая идея, спасибо. Может быть, вы знаете, как избежать предупреждений о принуждении? - person Marta; 07.03.2014