我有一个问题,我的一些代码,我固定的,但不完全理解为什么错误是错误[R强制转换NA VS串
的代码看起来像:
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