R:如何用数据帧列表替换名称列表?

时间:2017-02-07 21:36:32

标签: r list

我想将数据帧名称列表转换为数据帧列表。

示例:

datalist <- list("mtcars","swiss","iris")

然后我想做类似

的事情
for(i in 1:length(datalist)) {
 datalist[[i]] <- parse(datalist[[i]])
}

因此,当我运行datalist[[i]]时,我会看到与此相同的

> mtcars
                     mpg cyl  disp  hp drat    wt  qsec vs am gear carb
Mazda RX4           21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag       21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
Datsun 710          22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1

而不是

> datalist[[i]]
"mtcars"

3 个答案:

答案 0 :(得分:4)

mget是适当的功能。它适用于对象名称的字符向量,并返回对象列表。我使用unlist将您的列表转换为字符向量:

mget(unlist(datalist))

请注意,这不适用于示例中的内置数据框,除非(a)您将inherits选项设置为TRUE,如下所示:mget(unlist(datalist), inherits = TRUE)或(b )它们已经被加载到全局环境中(例如,使用data())。

与此处提出的其他答案相比,mget的一个优点是,使用对象的名称作为列表的名称创建结果列表。

答案 1 :(得分:2)

考虑使用get

datalist <- list("mtcars","swiss","iris")

dfList <- lapply(datalist, get)

for(i in 1:length(dfList)) {
  print(head(dfList[[i]]))
}

#                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
# Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
# Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
# Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
# Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
# Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
# Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

#          Fertility Agriculture Examination Education Catholic Infant.Mortality
# Courtelary        80.2        17.0          15        12     9.96             22.2
# Delemont          83.1        45.1           6         9    84.84             22.2
# Franches-Mnt      92.5        39.7           5         5    93.40             20.2
# Moutier           85.8        36.5          12         7    33.77             20.3
# Neuveville        76.9        43.5          17        15     5.16             20.6
# Porrentruy        76.1        35.3           9         7    90.57             26.6

# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# 1          5.1         3.5          1.4         0.2  setosa
# 2          4.9         3.0          1.4         0.2  setosa
# 3          4.7         3.2          1.3         0.2  setosa
# 4          4.6         3.1          1.5         0.2  setosa
# 5          5.0         3.6          1.4         0.2  setosa
# 6          5.4         3.9          1.7         0.4  setosa

答案 2 :(得分:1)

而不是

parse(datalist[[i]])

使用:

eval(parse(text = datalist[[i]]))

您需要评估解析的输出。