0

我想建立一个具有其特征的输入变量的 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 and p.ca.revasc$sd=0.06

你有什么建议吗?我正在尝试用谷歌搜索,但我什至很难知道提出这个问题的正确术语是什么。

4

2 回答 2

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

也就是说,我想不出你真正想要这样做的情况。在大多数情况下,最好将数据保存在数据框中,并对数据框进行处理。

于 2013-09-02T14:11:38.807 回答
-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))
}
于 2013-09-02T15:15:33.200 回答