有没有办法将字符串用作函数参数。在我的例子中,我有三个向量,我可以使用cbind来组合它们。
> df1<-1:3
> df2<-11:13
> df3<-21:23
>
> cbind(df1, df2, df3)
df1 df2 df3
[1,] 1 11 21
[2,] 2 12 22
[3,] 3 13 23
假设我有一个&#34; df1,df2,df3和#34;的字符串。
> x <- 'df1, df2, df3'
有没有办法在cbind中使用字符串的内容?例如,我想要一种方法来执行以下操作...
> cbind(x)
df1 df2 df3
[1,] 1 11 21
[2,] 2 12 22
[3,] 3 13 23
实际上,它是这样做的......
> cbind(x)
x
[1,] "df1, df2, df3"
有没有办法欺骗cbind函数来查看字符串的内容?
非常感谢任何帮助。
答案 0 :(得分:5)
我们split
字符串,mget
和cbind
list
的{{1}} vector
do.call
do.call(cbind, mget(strsplit(x, ', ')[[1]]))
# df1 df2 df3
#[1,] 1 11 21
#[2,] 2 12 22
#[3,] 3 13 23
或者我们也可以转换为do.call(cbind
data.frame
data.frame(mget(strsplit(x, ', ')[[1]]))
答案 1 :(得分:1)
比@ akrun的答案更多的库和更多的代码,但我做到了,所以我发布它。
library(stringr)
library(dplyr)
df1<-1:3
df2<-11:13
df3<-21:23
x <- 'df1, df2, df3'
x2 <- str_split(x, ", ", simplify=TRUE)
x3 <- lapply(x2, function(i){as.data.frame(eval(parse(text=i)))})
x4 <- bind_cols(x3)
names(x4) <- x2
答案 2 :(得分:1)
另一种可能性:
eval(parse(text=paste('cbind(',x,')')))
# df1 df2 df3
# [1,] 1 11 21
# [2,] 2 12 22
# [3,] 3 13 23