如何对数据框中列表中的元素进行矢量运算?

时间:2014-01-04 21:01:59

标签: r list dataframe

我有一个名为data的数据框。数据有一个名为predicted_OL的列,由列表组成。我想创建一个新列,它是对predicted_OL列表中元素的操作。例如,我想这样做:

data$new_column1 <- data$predicted_OL$fit + 1
data$new_column2 <- data$predicted_OL$r2 * 2

我该怎么做?请参阅下面的示例data$predicted_OL内部的内容:

> data$predicted_OL[1]

[[1]]
[[1]]$fit
           1 
-0.005725406 

[[1]]$se.fit
[1] 0.0004004448

[[1]]$df
[1] 249

[[1]]$residual.scale
[1] 0.004585551

[[1]]$r2
[1] 0.04053683
编辑:嗯,我一直在努力创建一个可重复的样本,但由于某些原因,它无法正常工作。我在下面的尝试产生了一个我似乎无法解决的错误。

modeldata <- data.frame(X = sample(1:20), Y = sample(1:20))
reg <- lm(Y ~ X, data = modeldata)

sample_pred <- function(model,value)
{
    next_obs <- data.frame(X = c(value))

    result <- predict(model,next_obs,se.fit=TRUE)
    c(result, value = value)
}

sampledata <- data.frame(X=sample(1:5))
sampledata$predictedY <- sapply(sampledata$X, sample_pred, model = reg)

1 个答案:

答案 0 :(得分:1)

您可以与sapply结合使用[[

data$new_column1 <- sapply(data$predicted_OL, "[[", "fit") + 1

data$new_column2 <- sapply(data$predicted_OL, "[[", "r2") * 2