从数据框创建字符串

Creating strings from dataframe

我的数据框

x1 <- data.frame(C1 = letters[1:4], C3=1:4, C3=letters[11:14])

我需要一个列表,其中每个列表元素都是一行中的两个值

x2 <- list(c("a", "1"), c("b", "2"), c("c", "3"), c("d", "4"))

基本上一行中的每两个值都需要是一个列表元素,以便我稍后可以处理它们!

我试过了

lapply(X = x2, MARGIN = 1, FUN = paste, collapse = "")

但这并没有给我想要的输出!

这是你想要的吗?

paste0(x1[,1], x1[,2])
# [1] "a1" "b2" "c3" "d4"

怎么样:

as.list(paste0(x1[,1], x1[,2]))
# [[1]]
# [1] "a1"
# 
# [[2]]
# [1] "b2"
# 
# [[3]]
# [1] "c3"
# 
# [[4]]
# [1] "d4"

有多少行并不重要。您只需要指定要粘贴到字符串中的列。

这是一个使用lapply的方法:

lapply(1:nrow(x1), function(i) c(x1[i,1], x1[i,2]))

结果是

[[1]]
[1] "a" "1"

[[2]]
[1] "b" "2"

[[3]]
[1] "c" "3"

[[4]]
[1] "d" "4"

数据

x1 <- data.frame(C1 = letters[1:4], C3=1:4, C3=letters[11:14],
                 stringsAsFactors = F)

请注意,我使用了 stringsAsFactors = F 参数来构造数据。如果我不这样做,那么 C1 和 C3 就是因数,所以我必须将 x[i, 1] 包裹在 as.character 中。

如果有多个列,我们可以使用do.call

as.list(do.call(paste0, x1[-3]))