转换R中的数据类型

时间:2017-03-23 23:41:27

标签: r type-conversion

我想了解如何将第一种数据类型转换为我可以使用的数据类型。这是我正在使用的代码,基本上我只是尝试对垃圾邮件数据集进行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错误和测试错误。

enter image description here

2 个答案:

答案 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))