相关疑难解决方法(0)

如何制作一个很好的R可重复的例子

在与同事讨论性能,教学,发送错误报告或在邮件列表上搜索指导时,以及在Stack Overflow上,通常会询问可重复的示例并始终提供帮助.

您有什么建议创建优秀示例的提示?如何以文本格式粘贴中的数据结构?您还应该包含哪些其他信息?

在另外还有其他招数来使用dput(),dump()structure()?你什么时候应该包括library()require()声明?其中保留字应避免一个,此外c,df,data等?

怎样才能成为一位伟大的重复的例子?

r r-faq

2474
推荐指数
23
解决办法
28万
查看次数

如何在没有强制的情况下将列表展平到列表?

我试图实现类似于unlist的功能,但类型不会被强制转换为向量,但会返回包含保留类型的列表.例如:

flatten(list(NA, list("TRUE", list(FALSE), 0L))
Run Code Online (Sandbox Code Playgroud)

应该回来

list(NA, "TRUE", FALSE, 0L)
Run Code Online (Sandbox Code Playgroud)

代替

c(NA, "TRUE", "FALSE", "0")
Run Code Online (Sandbox Code Playgroud)

将由...返回unlist(list(list(NA, list("TRUE", list(FALSE), 0L)).

从上面的例子中可以看出,扁平化应该是递归的.标准R库中是否有一个功能可以实现这一功能,或者至少还有一些其他功能可用于轻松有效地实现这一功能?

更新:我不知道从上面是否清楚,但非名单不应该被夷为平地,即flatten(list(1:3, list(4, 5)))应该返回list(c(1, 2, 3), 4, 5).

r list standard-library flatten type-coercion

49
推荐指数
4
解决办法
6128
查看次数

将基于记录的列表/对象展平为数据帧

编辑:这个问题已经过时了.所述jsonlite软件包自动变平.

我正在处理具有基于记录的编码的在线数据流,通常使用JSON.API文档中已知对象的结构(即JSON中的名称),但是,值大多是可选的,并不存在于每个记录中.列表可以包含新列表,结构有时非常深.以下是一些GPS数据的一个非常简单的例子:http://pastebin.com/raw.php?i = yz6z9t25.请注意,在较低的行中,"l"由于没有GPS信号,对象丢失.

我正在寻找一种优雅的方法将这些对象展平成数据帧.我目前正在使用这样的东西:

library(RJSONIO)
library(plyr)

obj <- fromJSON("http://pastebin.com/raw.php?i=yz6z9t25", simplifyWithNames=FALSE, simplify=FALSE)
flatdata <- lapply(obj$data, as.data.frame);
mydf <- rbind.fill(flatdata)
Run Code Online (Sandbox Code Playgroud)

这样可以完成工作,但是速度慢且容易出错.这种方法的一个问题是我没有使用我对数据中结构(对象名称)的了解; 相反,它是从数据推断出来的.当每个记录中都没有某个属性时,这会导致问题.在这种情况下,它根本不会出现在数据框中,而不是具有NA值的列.这可能导致下游问题.例如,我需要处理位置时间戳:

mydf$l.t <- structure(mydf$l.t/1000, class="POSIXct")
Run Code Online (Sandbox Code Playgroud)

但是,如果数据集中l$t没有对象,则会导致错误.此外无论是as.data.framerbind.fill做事情很慢.示例数据集相对较小.有关更好实施的建议吗?一个强大的解决方案总是会产生一个数据帧,该数据帧具有相同顺序的相同列,并且只有行数变化.

编辑:在具有更多元数据的数据集下方.它的尺寸更大,嵌套更深:

obj <- fromJSON("http://www.stat.ucla.edu/~jeroen/files/output.json", simplifyWithNames=FALSE, simplify=FALSE)
Run Code Online (Sandbox Code Playgroud)

r

8
推荐指数
2
解决办法
2041
查看次数

标签 统计

r ×3

flatten ×1

list ×1

r-faq ×1

standard-library ×1

type-coercion ×1