从数据框创建字符串

时间:2016-06-13 17:17:39

标签: r string dataframe dplyr plyr

我的数据框

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 = "")

但那并没有给我所需的输出!

3 个答案:

答案 0 :(得分:3)

这是你想要的吗?

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"

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

答案 1 :(得分:1)

这是一个使用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中。

答案 2 :(得分:1)

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

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