У меня была проблема с некоторыми из моего кода, и я установил его, но не в полной мере понять, почему ошибка произошла ошибкаR типаж NA против строки
код выглядел так:
for(i in 1:3){df = rbind.fill(z, data.frame(id=i,
data=if(is.null(x$results[[i]]$synopsis$data))
{NA}else{x$results[[i]]$synopsis$data}))}
В вопрос, который у меня был, если первое значение данных действительно было нулевым, я бы получил NA
, но затем для второго и третьего я либо получил бы еще NA
, либо если бы были данные, я бы не получил его, я бы получил 1
.
Если первое значение было данными, я бы получил данные, а для двух других я либо получил бы NA
, либо правильные данные.
Я не компьютерный ученый, но разработчик, который сидит рядом со мной (но не знает R), предположил, что это как-то связано с различными машинами NA
и строкой. Чтобы решить проблему, я изменил NA
на "0"
(я полагаю, что "NA"
тоже будет работать).
Мне просто хотелось бы получить более подробное объяснение происходящего. Понимание моего непрофессионала, если NA
был первым результатом, тогда каждый результат находится в этом «формате», где что-то либо NA
, либо нет, а не обрабатывается как 1
, что своего рода вроде булевого ответа?
Пример:
my.list <- list(list(),structure(
list(
experience = structure(
list(
start = "Hi"
),.Names = c("start")),
`_meta` = structure(
list(weight = 1L, `_sources` = list(structure(
list(`_origin` = "a"), .Names = "_origin"
))),.Names = c("weight", "_sources"))),.Names = c("experience", "_meta")))
my.list[[1]]$experience$start
NULL
my.list[[2]]$experience$start
[1] "Hi"
df <- NULL
for(i in 1:2){df = rbind.fill(df, data.frame(id=i,
data=if(is.null(my.list[[i]]$experience$start))
{NA}else{my.list[[i]]$experience$start}))}
Тогда
df2 <- NULL
for(i in 1:2){df2 = rbind.fill(df2, data.frame(id=i,
data=if(is.null(my.list[[i]]$experience$start))
{"NA"}else{my.list[[i]]$experience$start}))}
Результаты:
df: df2:
id data id data
1 NA 1 NA
2 1 2 HI
Каков ожидаемый результат для 'df'? Только одна строка с опытом начала id2 «Привет» или две строки? –
обновлен с результатами - df1 ошибочен, и я хотел бы знать, почему – Olivia