【问题标题】:How to access positions of data frames within a list如何访问列表中数据框的位置
【发布时间】:2017-09-29 21:05:26
【问题描述】:

我通过以下方式列出了 data.frames:

dflist <- list()

for (i in 1:24) {
  name <- paste("tp",i,sep="")
  assign(name, read.csv(paste(i, "c.csv", sep=""), sep  = ";", header = TRUE))
  dflist[[i]] <- name
}

列表如下所示:

> dflist
[[1]]
[1] "tp1"

[[2]]
[1] "tp2"

和这样的data.frames:

> tp1
   X..     X1     X2     X3     X4     X5     X6     X7     X8     X9    X10    X11    X12
1    A 0.0463 0.0503 0.0478 0.0499 0.0501 0.0499 0.0495 0.0505 0.0491 0.0520 0.0492 0.0509
2    B 0.0503 0.0508 0.0495 0.0494 0.0498 0.0501 0.0497 0.0492 0.0496 0.0497 0.0495 0.0496

我现在如何访问我的 data.frames 的特定元素?

dflist[[1]][1,1]

不工作.. 我搜索了其他答案,但不知何故,我经常建议的“lapply”功能无法正常工作。

【问题讨论】:

    标签: r list dataframe extract


    【解决方案1】:

    首先不要使用assign。如果你这样做,你将需要get

    get(dflist[[1]])[1, 1]
    

    这充其量是丑陋的。并且您将有 24 个 df 在全球环境中游荡供您处理。
    更好的是使用lapply 并将它们全部存储在您的dflist 中,而不仅仅是他们的名字。

    dflist <- lapply(1:24, function(i){
            read.csv(paste(i, "c.csv", sep=""), sep  = ";")
    })
    
    names(dflist) <- paste("tp", 1:24, sep="")
    
    dflist$tp1[1, 1]
    

    另外,您是否有sep = ";",因为它来自小数点标记为逗号的国家/地区?如果是这样,您可以使用该函数的其他版本来读取数据,read.csv2。您不必手动设置它。 (并且他们都假定header = TRUE 为默认值。)

    【讨论】:

    • 感谢您的快速回答!我没有意识到我只是在存储名称哈哈.. 从现在开始我将使用 read.csv2。再次感谢您!
    • 有趣的事实:我来自瑞士,我刚刚了解到它是唯一一个根据情况使用逗号和点作为小数点的国家。
    • @ElArk 所以你必须小心。如有疑问,您可以使用read.table,这是read.csvread.csv2 在设置某些参数的值后调用的函数。我建议您阅读相应的帮助页面。但接下来你会有更多工作要做。
    猜你喜欢
    • 1970-01-01
    • 2011-12-19
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-02
    • 1970-01-01
    • 2019-03-26
    相关资源
    最近更新 更多