![](/img/trans.png)
[英]R convert list of characters and vectors into data.table of characters
[英]How to convert several characters to vectors in R?
我正在努力将几个字符转换为矢量并将它们作为R中的列表。
转换规则如下:
例如,假设存在一个具有三个成分的ex
对象。 对于每个组件,我都希望列出对象list1
, list2
和list3
。
ex = c("(A,B,C,D)", "(AB,BC,CD)","(AB,C)")
# 3 lists to be returned from ex object
list1 = "list(1,2,3,4)" # from (A,B,C,D)
list2 = "list(c(1,2), c(2,3), c(3,4))" # from (AB,BC,CD)
list3 = "list(c(1,2), c(3))" # from (AB,C)
请让我知道一个很好的R函数来解决上面的示例。 *反映了微小的变化。
lookUpTable = as.numeric(1:4) #map numbers to their respective strings
names(lookUpTable) = LETTERS[1:4]
step1<- #get rid of parentheses and split by ",".
strsplit(gsub("[()]", "", ex), ",")
result<- #split again to make things like "AB" into "A", "B", also convert the strings to numbers acc. to lookUpTable
lapply(step1, function(x){ lapply(strsplit(x, ""), function(u) unname(lookUpTable[u])) })
# assign to the global environment.
invisible(
lapply(seq_along(result), function(x) {assign(paste0("list", x), result[[x]], envir = globalenv()); NULL})
)
# get it as strings:
invisible(
lapply(seq_along(result), function(x) {assign(paste0("list_string", x), capture.output(dput(result[[x]])), envir = globalenv()); NULL})
)
数据:
ex = c("(A,B,C,D)", "(AB,BC,CD)","(AB,C)")
技巧和窍门:
我在gsub
(和strsplit
)中使用了正则表达式。 学习正则表达式!
我做了一个lookUpTable
,将各个字符串映射为数字。 确保您的lookUpTable设置类似。
看看那种情况下的apply函数?lapply
。
最后,我assign
结果assign
全球环境。 我不建议此步骤,但是它是您所要求的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.