我想了解如何将第一种数据类型转换为我可以使用的数据类型。这是我正在使用的代码,基本上我只是尝试对垃圾邮件数据集进行OLS回归,然后计算std错误和测试错误。但是,我无法转换下面的数据类型。这是代码,因此您可以重现该示例。可以在以下链接找到垃圾邮件和测试数据:https://statweb.stanford.edu/~tibs/ElemStatLearn/(转到左侧的数据标签,然后向下滚动到垃圾邮件数据)
# reading in the data
spam <- read.table("spam.data.txt") # X
test.set <- read.table("test.set.txt") # tt
# train and test set
x.train = subset(spam, test.set==0) # assigning the train to 0
p = dim(x.train)[2]-1 # dimension
x.test = subset(spam, test.set==1) # assigning the test to 1
# standardization of predictors
trainst <- x.train
for(i in 1:58) {
trainst[,i] <- trainst[,i] - mean(spam[,i]);
trainst[,i] <- trainst[,i]/sd(spam[,i]);
}
testst <- x.test
for(i in 1:58) {
testst[,i] <- testst[,i] - mean(spam[,i]);
testst[,i] <- testst[,i]/sd(spam[,i]);
}
# permuting data frames
train = trainst[sample(nrow(trainst)),]
test = testst[sample(nrow(testst)),]
library("MASS")
fit.ls <- lm(train$V58 ~ . - 1, train)
ls <- fit.ls$coef
这个底线fit.ls $ coef是产生下面数字列表的原因。我基本上想要转换该数据类型,以便我可以使用它来计算std错误和测试错误。
答案 0 :(得分:3)
你可以用reshape2来实现这个目标。
library(reshape2)
data = c(v1 = 5, v2= 3, v3= 7)
melted = melt(data)
答案 1 :(得分:2)
试试这个
df <- do.call(rbind, lapply(ls, data.frame, stringsAsFactors=F))
head(df)
# X..i..
#V1 -0.02287274
#V2 -0.03491058
#V3 0.05197059
#V4 0.03802391
#V5 0.10026819
#V6 0.07542830
您现在可以轻松计算sd
df %>% dplyr::rename(value = X..i..) %>% mutate(sd = sd(value))