使用字符串的内容作为R中的函数参数

时间:2017-10-22 03:06:43

标签: r

有没有办法将字符串用作函数参数。在我的例子中,我有三个向量,我可以使用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函数来查看字符串的内容?

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:5)

我们split字符串,mgetcbind 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
相关问题