我想构建一个包含其特征的输入变量的Excel文件。例如:
Name Mean sd
p.ca.revasc 0.80 0.06
p.ca.pci_revasc 0.85 0.05
p.ca.defer_xrevasc 0.40 0.09
我想将此工作表导入R,但将每一行读取为新的数据框或列表。我怎么能这样做?
换句话说,在阅读之后,我想对象和元素如下:p.ca.revasc$mean
= 0.80和p.ca.revasc$sd
= 0.06
你有什么建议吗?我正在尝试使用谷歌,但我很难知道提出这个问题的正确术语是什么。
答案 0 :(得分:1)
首先,阅读工作表。我更喜欢将Excel工作表保存为Excel中的.csv
,所以
master_df <- read.csv("excelsheet.csv")
但在某些情况下,将其保留为Excel格式更为合理
require("xlsx")
master_df <- read.xlsx2("excelsheet.xlsx", sheetName="mysheet")
最简单的方法可能是使用plyr
包。如果您完全确定每行都有唯一的name
列,则可以使用
require(plyr)
data_list <- dlply(master_df, .(Name), identity)
否则,您需要定义一个在每行中唯一的索引列
data_list$index <- 1:nrow(master_df)
data_list <- dlply(master_df, .(index), identity
那就是说,我想不出你真正想要这样做的情况。在大多数情况下,更好的做法是将数据保存在数据框中,并对数据框执行操作。
答案 1 :(得分:-1)
你可以在循环中完成它,但不是那么优雅。然后,您将为工作表中的每一行设置一个数据框。
dta <- read.table("test.csv", sep = ",", header=TRUE)
for(i in 1:dim(dta)[1]){
new_str <- paste(as.character(dta$Name[i]), " <- data.frame(Mean = ", dta$Mean[i], ",sd = ", dta$sd[i], ")")
eval(parse(text = new_str))
}