粘贴不返回值连接

时间:2015-07-16 23:34:48

标签: r

我试图让数据帧的列名在另一个调用中使用它们,但是这个apply调用返回分隔的值,而不是正确连接。我在这里做错了什么?

df<-data.frame(c(1,2,3),c(4,5,6))
colnames(df)<-c("hi","bye")
apply(df,2,function(x){
    paste("subscale_scores$",colnames(x),sep="")

#this is the command I am eventually trying to run      
 #lm(paste("subscale_scores",colnames(x))~surveys$npitotal+ipip$extraversion+ipip$agreeableness+ipip$conscientiousness+ipip$emotionalStability+ipip$intelImagination)
})

目标输出:

subscale_scores$hi
subscale_scores$bye

2 个答案:

答案 0 :(得分:4)

是否需要apply

这是你的意思吗?

paste0('subscale_scores$', names(df))
# [1] "subscale_scores$hi"  "subscale_scores$bye"

如果您需要将它们连接到换行符,请添加, sep='\n'

paste0paste(..., sep="")的缩写。

关于您之后lm来电的说明 - 如果您想lm(Y ~ ...)分别在Y的每个列中进行操作,请尝试:

lms <- lapply(colnames(df),
              function (y) {
                  # construct your formula
                  frm <- paste0('subscale_scores$', y, ' ~ surveys$npitotal+ipip$extraversion+ipip$agreeableness+ipip$conscientiousness+ipip$emotionalStability+ipip$intelImagination')
                  lm(frm)
              })
names(lms) <- colnames(df)

然后lms$hi将包含lm(subscale_scores$hi ~ ...)的输出,依此类推。

或者目标是将所有列组合在一起(Y1 + Y2 ~ ...

然后paste0('subscale_scores$', names(df), collapse='+')会给你subscale_scores$hi+subscale_scores$bye

答案 1 :(得分:0)

这个怎么样?

unlist(lapply(colnames(df),function(x){
    paste("subscale_scores$",x,sep="")
}))