繁体   English   中英

在 R 如何将 R dataframe 中的多个字符串列组合成一个列表列

[英]In R how to combine multiple string columns in an R dataframe into one list column

我正在尝试将数据框中的多个字符串列组合成一个包含多个元素的列表。

以下是一些示例数据:

Df = 
Note1   Note2   Note3   OtherStuff
“do”    na  “re”    54
“fa”    “so”    “ti”    na
“mi”    “do”    na  10

我想要的是:

DF = 
Note1   Note2   Note3   OtherStuff  Notes1_3
“do”    na  “re”    54      c(“do”, na, “re”)
“fa”    “so”    “ti”    na      c(“fa”, “so”, “ti”)
“mi”    “do”    na  10      c(“mi”, “do, na)

我按照另一个 Stackoverflow Q&A 中的建议尝试了以下代码:

DF %>%
  mutate(Notes1_3 = mapply(c, Note1, Note2, Note3)

对于 dataframe 中的所有行,这导致 Notes1_3 等于 NULL。 这看起来应该很容易做到,我只是错过了一些细节。

如果您希望Notes1_3成为标题中的列表列,则只需将其变成列表,而不是向量:

df <- structure(list(Note1 = c("“do”", "“fa”", "“mi”"), 
    Note2 = c("na", "“so”", "“do”"), Note3 = c("“re”", 
    "“ti”", "na"), OtherStuff = c("54", "na", "10")), class = "data.frame", row.names = c(NA, 
-3L))

df
  Note1 Note2 Note3 OtherStuff
1  “do”    na  “re”         54
2  “fa”  “so”  “ti”         na
3  “mi”  “do”    na         10

df2 <- df %>%
    mutate(Notes1_3 = list(Note1, Note2, Note3))

df2
  Note1 Note2 Note3 OtherStuff         Notes1_3
1  “do”    na  “re”         54 “do”, “fa”, “mi”
2  “fa”  “so”  “ti”         na   na, “so”, “do”
3  “mi”  “do”    na         10   “re”, “ti”, na

如果我们专门查看该列,我们会看到它实际上是所需的向量列表:

df2$Notes1_3
[[1]]
[1] "“do”" "“fa”" "“mi”"

[[2]]
[1] "na"   "“so”" "“do”"

[[3]]
[1] "“re”" "“ti”" "na"  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM