从数据框创建字符串
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]))
我的数据框
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]))