我有一个列表paths
,如下所示?
守则是:
for (each in paths)
{
print (each)
}
输出结果为:
[1] "1" "2"
[1] "1" "2" "3"
[1] "1" "2" "3" "5"
[1] "1" "2" "4"
[1] "1" "2" "4" "5"
[1] "1" "3"
[1] "1" "3" "5"
[1] "1" "4"
[1] "1" "4" "5"
[1] "1" "5"
[1] "2" "3"
[1] "2" "3" "5"
[1] "2" "4"
[1] "2" "4" "5"
[1] "3" "5"
[1] "4" "5"
如何将此全部追加为数据帧的行。由于行长度不等,as.data.frame
失败。
答案 0 :(得分:1)
根据定义,数据框是矩形的,每行中的列数相同。您可以将每个行的长度设置为相同(它们将使用NA
填充),然后rbind
将它们组合在一起:
maxlength = max(lengths(paths))
paths2 = lapply(paths, function(x) {length(x) = maxlength; return(x)})
paths_df = do.call(rbind, args = paths2)
这将给出一个矩阵,但您可以从那里轻松转换为数据框。
答案 1 :(得分:0)
data.frame
需要是矩形的。此外,给定列的所有元素都必须是相同类型的对象。因此,您可以拥有一个由data.frame
类型的对象组成的list
列,其大小可能会有所不同。
paths=list(1,c(1,2))
df=data.frame("pathNumber"= 1:length(paths))
df$path=paths
结果如下所示
pathNumber path
1 1 1
2 2 1, 2
答案 2 :(得分:0)
一种选择是将列表作为数据框的列。如果您想要其他列,可能需要这样做。
df <- data.frame(paths = I(paths))