我有一个名为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)
答案 0 :(得分:1)
您可以与sapply
结合使用[[
:
data$new_column1 <- sapply(data$predicted_OL, "[[", "fit") + 1
data$new_column2 <- sapply(data$predicted_OL, "[[", "r2") * 2