我的数据框
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 = "")
但那并没有给我所需的输出!
答案 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]))