繁体   English   中英

R —取消嵌入data.frame列中的列表列表

[英]R — unembedding a list of lists from a data.frame column

我有一个带有两列的data.frame,如下所示:

sid        calibration
sid201     [['left', '37.1', '18.9', '0.0', '0.9\xb0', '0.4\xb0'], ['right', '42.2', '24.0', '0.0', '1.0\xb0', '0.6\xb0']]
sid202     [['left', '7.4', '13.6', '0.0', '0.2\xb0', '0.3\xb0'], ['right', '14.6', '15.1', '0.0', '0.3\xb0', '0.4\xb0']]

以此类推。

我遇到的问题是弄清楚如何从“校准”列中提取所需的信息。

我想将“校准”因子解析为两行,其中“左”和“右”是新因子“眼”的级别,其他5个元素中的每一个都分配给自己的列-简单地说a:e

如果按照您说的那样存储数据,则可以对名为df的data.frame尝试以下操作:

# stack the data
dfStacked <- data.frame("sid"=c(df$sid, df$sid), 
             "calibration"=c(sapply(df$calibration, function(i) c(i[[1]])),
                             sapply(df$calibration, function(i) c(i[[2]]))))
# split the data vectors
calibList <- strsplit(dfStacked$calibration, split=", ")

# put the results into a data.frame, loops through variables in outer loop
# loops through observations in inner row to get variables
results <- as.data.frame(sapply(1:5, 
          function(element) cbind(sapply(calibList, function(row) c(row[[i]])))))
# add to dataset
dfDone <- cbind(dfStacked$sid, results)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM