我的矢量具有以下结构。名称为def has_attr?(a)
的向量是单元格def has_attr(a)?
和"data_1"
等之间的数字
"data_1"
我想像这样创建数据帧DF。因此每个向量都在单独的数据框中。
"data_2"
fast 的方法是什么?我有400万条记录,因此row name cell meaning
1 data_1
2 3.4
3 2.3
... ...
40 data_2
41 12
... ...
60 data_3
61 63.2
... ...
这样的传统循环太慢了。谢谢。
答案 0 :(得分:0)
你的意思是这样吗?
library(zoo)
#split dataframe in list of values
df_list <- split(df, na.locf(sapply(df$cell_meaning, function(x) ifelse(grepl("[0-9]+\\.?[0-9]+",x),
NA,
which(df$cell_meaning==x)))))
names(df_list) <- NULL
#remove data_*
final_list <- lapply(df_list, `[`, -1,)
#final output
final_list
final_list[1]
输出是:
> final_list
[[1]]
[1] "3.4" "2.3"
[[2]]
[1] "12"
[[3]]
[1] "63.2"
> final_list[1]
[[1]]
[1] "3.4" "2.3"
示例数据:
df <- structure(list(cell_meaning = c("data_1", "3.4", "2.3", "data_2",
"12", "data_3", "63.2")), .Names = "cell_meaning", class = "data.frame", row.names = c(NA,
-7L))