在R上遍历作为列表中的表的子帧

dgtucam1  于 12个月前  发布在  其他
关注(0)|答案(2)|浏览(90)

我对R有点陌生,我一直在使用嵌套框,而循环(for)函数是R。这次,我试图将3个嵌套框添加到列表中,其中3个嵌套框由3列组成。这是我添加到列表中的嵌套框之一。


的数据
如上所述,这个框架包含3列,但它只是一个表。
然而,当我把它添加到列表中时,这些字符串被分成了9个不同的字符串。

我想通过列表中的3个字符串,而不是9。我怎么能做到这一点?我已经尝试了这段代码无济于事:

df
plc_korpus_list <- list()

plc_korpus_list <- c(plc_korpus_list, df))

for (i in plc_korpus_list){
    print(i)
  }

字符串
我如何在列表中遍历三个独立的表中的所有子帧?
我试过了我试过了for循环,我希望i能检索每个表,而不仅仅是列。我怎么能只得到表呢?我想在最后rbind它们。
谢谢。如果我的解释不清楚,很抱歉。

h79rfbju

h79rfbju1#

我不确定我是否理解了你的问题。也许这对你有帮助。它还允许你在不使用for循环的情况下操作你的df

library(tidyverse)

df1 <- tibble(
  a = 1:10,
  b = LETTERS[1:10]
)

df2 <- tibble(
  a = 11:20,
  b = LETTERS[11:20]
)

df3 <- tibble(
  a = 21:30,
  b = letters[1:10], 
  c = rnorm(10, 0, 1)
)

dflist <- list(df1, df2, df3)

xx <- tibble(
  id = 1:length(dflist),
  v = dflist
)

## mutate if you want; uunest if you want
xx %>% 
  mutate(v = map(.x = v, .f = \(x) 
                 x %>% mutate(
                   d = paste("d", a, b, sep = ""), 
                   rn = row_number()
                   )
                 )) %>% 
  unnest(v)

字符串

bpzcxfmw

bpzcxfmw2#

如果l1l2都是list s,则c()函数将l2中的项 * 追加 * 到l1中,即您将获得一个列表:

> c(list(A = 1, B = "x"), list(C = 2, D = "y"))
$A
[1] 1

$B
[1] "x"

$C
[1] 2

$D
[1] "y"

字符串
正如你可能知道的,data.frame s是lists s(有一些限制),所以如果你c()两个data.frame s,你会得到一个包含两个data.frame s的所有列的列表:

> df1 <- data.frame(X = LETTERS[1:3], Y = 1:3, Z = 4:6)
> df2 <- data.frame(X = LETTERS[4:6], Y = 1:3, Z = 4:6)
> c(df1, df2)

$X
[1] "A" "B" "C"

$Y
[1] 1 2 3

$Z
[1] 4 5 6

$X
[1] "D" "E" "F"

$Y
[1] 1 2 3

$Z
[1] 4 5 6


为了得到list s的list,你必须使用list()函数来创建一个新的list,其中每个项目本身就是一个列表:

> list(df1, df2)
[[1]]
  X Y Z
1 A 1 4
2 B 2 5
3 C 3 6

[[2]]
  X Y Z
1 D 1 4
2 E 2 5
3 F 3 6

相关问题