使用粘贴执行函数以在R中的数据框中创建新变量 [英] Executing a function with paste to create a new variable in a dataframe in R

查看:56
本文介绍了使用粘贴执行函数以在R中的数据框中创建新变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

数据:

structure(list(`p value` = c(0.00151124736422317, 0.804709799937324, 
0.0192537412780042, 0.000467854188597731, 4.80216666553605e-06, 
0.0231434946595433), significance = c(TRUE, FALSE, TRUE, TRUE, 
TRUE, TRUE)), .Names = c("p value", "significance"), row.names = c("Q5.i", 
"Q5.ii", "Q5.iii", "Q5.iv", "Q5.v", "Q5.vi"), class = "data.frame")

目标:创建一个将输入数据框名称和(新)变量名称的函数.该函数将:

Objective: To create a function that would take input of dataframe name and a (new) variabe name. The function would:

  1. 基于数据框的行名创建一个新变量
  2. 删除行名
  3. 重新排序变量,以便新创建的列是第一列

挑战:我被困在第一步.

Challenges: I am stuck at the first step.

我已经在互联网和stackoverflow上搜索了有助于解决问题的代码段,尽管有些行不通,但我还是设法敲定了一些东西.我尝试了什么:

I've searched the internet and stackoverflow for snippets of code that would help and I've managed to hammer something although it couldn't work. What have I tried:

row2col<-function(df, varname){
 eval(parse(text=paste(df, "[[", "'", varname, "'", "]]", "<-row.names(", df, ")", sep="")))
}


row2col<-function(df, varname){
  assign(parse(text=paste(df, varname, sep="$")), row.names(df))
}

结果:

  1. 什么都没发生(甚至没有错误消息)
  2. 已创建行名的字符向量(而不是数据框中的变量)

感谢您对本文的帮助和关注.

Thanks for your help and attention to this post.

推荐答案

您不需要使用 eval parse assign -在许多情况下,这不是正确的方法.这是一个简单的替代方法:

You don't need to use eval, parse, assign - that's in many cases not the right approach. Here's a simple alternative:

row2col <- function(dat, varname) {
  dat[[varname]] <- row.names(dat)  
  row.names(dat) <- NULL
  dat[, c(varname, setdiff(names(dat), varname))]
}

然后您可以对其进行测试:

And then you can test it:

> row2col(df, "testcol")
#  testcol      p value significance
#1    Q5.i 1.511247e-03         TRUE
#2   Q5.ii 8.047098e-01        FALSE
#3  Q5.iii 1.925374e-02         TRUE
#4   Q5.iv 4.678542e-04         TRUE
#5    Q5.v 4.802167e-06         TRUE
#6   Q5.vi 2.314349e-02         TRUE

这篇关于使用粘贴执行函数以在R中的数据框中创建新变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆