【问题标题】:getting the names of data frames from list in R从R中的列表中获取数据框的名称
【发布时间】:2022-01-26 13:46:29
【问题描述】:

我有一个包含 36 个数据框的列表。我想创建一个包含这些数据框的所有名称的列表:

   dput(myfiles[1:2])
list(structure(list(X.Treatment.1.Treatment.10.Treatment.2.Treatment.3.Treatment.4.Treatment.5.Treatment.6.Treatment.7.Treatment.8.Treatment.9 = c("Treatment.1,1,0.779269898976048,0.987582177817029,0.999865208543176,0.999637376053903,0.969316946773183,0.992798203986959,0.424960684181985,0.804869101320034,0.934784678841289", 
"Treatment.10,0.779269898976048,1,0.671138248567996,0.789454098761072,0.762111859396959,0.909408486972833,0.848734212632234,-0.236126723371631,0.255300504533133,0.505840502482398", 
"Treatment.2,0.987582177817029,0.671138248567996,1,0.984869671366683,0.991454531822078,0.918661911614817,0.961649044703906,0.561895346303209,0.888107698459535,0.978982111839266", 
"Treatment.3,0.999865208543176,0.789454098761072,0.984869671366683,1,0.99906051831384,0.973222174821046,0.994631289318653,0.410041249133801,0.795017057233326,0.9288266084351", 
"Treatment.4,0.999637376053903,0.762111859396959,0.991454531822078,0.99906051831384,1,0.962346166096083,0.989212254209048,0.449182113577399,0.820557713571369,0.944010924367408", 
"Treatment.5,0.969316946773183,0.909408486972833,0.918661911614817,0.973222174821046,0.962346166096083,1,0.991784351747349,0.189407610662142,0.634294194129571,0.81878574572229", 
"Treatment.6,0.992798203986959,0.848734212632234,0.961649044703906,0.994631289318653,0.989212254209048,0.991784351747349,1,0.31345701514879,0.72797778020465,0.885498274066011", 
"Treatment.7,0.424960684181985,-0.236126723371631,0.561895346303209,0.410041249133801,0.449182113577399,0.189407610662142,0.31345701514879,1,0.879237827530393,0.718791431723663", 
"Treatment.8,0.804869101320034,0.255300504533133,0.888107698459535,0.795017057233326,0.820557713571369,0.634294194129571,0.72797778020465,0.879237827530393,1,0.963182415401058", 
"Treatment.9,0.934784678841289,0.505840502482398,0.978982111839266,0.9288266084351,0.944010924367408,0.81878574572229,0.885498274066011,0.718791431723663,0.963182415401058,1"
)), class = "data.frame", row.names = c(NA, -10L)), structure(list(
    X.Treatment.1.Treatment.10.Treatment.2.Treatment.3.Treatment.4.Treatment.5.Treatment.6.Treatment.7.Treatment.8.Treatment.9 = c("Treatment.1,1,NA,NA,NA,NA,NA,NA,NA,NA,NA", 
    "Treatment.10,NA,1,NA,NA,NA,NA,NA,NA,NA,NA", "Treatment.2,NA,NA,1,NA,NA,NA,NA,NA,NA,NA", 
    "Treatment.3,NA,NA,NA,1,NA,NA,NA,NA,NA,NA", "Treatment.4,NA,NA,NA,NA,1,NA,NA,NA,NA,NA", 
    "Treatment.5,NA,NA,NA,NA,NA,1,NA,NA,NA,NA", "Treatment.6,NA,NA,NA,NA,NA,NA,1,NA,NA,NA", 
    "Treatment.7,NA,NA,NA,NA,NA,NA,NA,1,NA,NA", "Treatment.8,NA,NA,NA,NA,NA,NA,NA,NA,1,NA", 
    "Treatment.9,NA,NA,NA,NA,NA,NA,NA,NA,NA,1")), class = "data.frame", row.names = c(NA, 
-10L)))

我想要一个包含所有数据框名称的列表。问题是当我写的时候:

names(list_median)[i]

它只返回 NULL。列表中的每个数据框都是一个相关矩阵,如下所示。

【问题讨论】:

  • names(list_median),没有子集部分返回什么?
  • 它返回 NULL @Rui Barradas
  • 如果df不是很大,可以发dput(list_median[1:2])的输出吗? (只是前 2 个 data.frames)。
  • 将图片添加到 Q 会有帮助吗? @瑞巴拉达斯
  • > dput(list_median [1:2])列表(结构(C(1,0.779269898976048,0.987582177817029,0.999865208543176,0.999637376053903,0.969316946773183,0.992798203986959,0.424960684181985,0.804869101320034,0.934784678841289,0.779269898976048,1,0.671138248567996, 0.789454098761072,0.762111859396959,0.909408486972833,0.848734212632234,-0.236126723371631,0.255300504533133,0.505840502482398,0.987582177817029,0.671138248567996,1,0.984869671366683,0.991454531822078,0.918661911614817,跨度>

标签: r list dataframe names


【解决方案1】:

以下是您遇到问题的可能解释。代码注释:

# extract each dataframe to global environment with this code
for (i in seq(list_median))
  assign(paste0("df", i), list_median[[i]])

# you should see df1 and df2 etc.. in the Environment

# Now construct a list out of a few of df eg.df1 and df2 with a list of two dataframes:
my_list<- list(df1,df2)

# Now try to get the names
names(my_list)
# you will get NULL

# Now try this: name the dataframes like here and call the names:
my_list<- list(df1nownamed = df1, df2nownamed = df2)
names(my_list)

# and you will get:
[1] "df1nownamed" "df2nownamed"

【讨论】:

    【解决方案2】:

    我不明白是不是这样:

    mat_names <- lapply(list_median, \(x) do.call(cbind, dimnames(x)))
    mat_names <- lapply(mat_names, \(x) {colnames(x) <- c("Rows", "Cols"); x})
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-24
      • 2021-08-27
      • 2021-09-14
      • 2015-04-03
      • 1970-01-01
      • 1970-01-01
      • 2015-11-21
      • 1970-01-01
      相关资源
      最近更新 更多