Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用paste执行函数以在R中的数据帧中创建新变量_R_Function - Fatal编程技术网

使用paste执行函数以在R中的数据帧中创建新变量

使用paste执行函数以在R中的数据帧中创建新变量,r,function,R,Function,数据: 目标: 创建一个函数,该函数将接受数据帧名称和(新)变量名称的输入。 该职能将: 创建一个基于数据帧的行名称的新变量 删除行名称 对变量重新排序,以便新创建的 列是第一列 挑战: 我在第一步就被卡住了 我在互联网和stackoverflow上搜索了一些代码片段,这些代码片段可能会有所帮助,我设法找到了一些东西,尽管它无法工作。 我试过什么: structure(list(`p value` = c(0.00151124736422317, 0.804709799937324, 0.01

数据:

目标: 创建一个函数,该函数将接受数据帧名称和(新)变量名称的输入。 该职能将:

  • 创建一个基于数据帧的行名称的新变量
  • 删除行名称
  • 对变量重新排序,以便新创建的 列是第一列
  • 挑战: 我在第一步就被卡住了

    我在互联网和stackoverflow上搜索了一些代码片段,这些代码片段可能会有所帮助,我设法找到了一些东西,尽管它无法工作。 我试过什么:

    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")
    

    row2col您不需要使用
    eval
    parse
    assign
    ——在许多情况下,这不是正确的方法。这里有一个简单的选择:

    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))
    }
    

    您不需要使用
    eval
    parse
    assign
    ——在许多情况下,这不是正确的方法。这里有一个简单的选择:

    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))
    }
    

    使用行名称创建新的var

    > 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
    

    data$new\u var使用行名称创建新的var

    > 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
    

    data$new\u var和我为第一个目标奋斗了半天……非常感谢!!!我为第一个目标奋斗了半天…非常感谢!!!R经验法则-如果您曾经使用
    eval
    assign
    parse
    。。。。不要…:-)此功能已经存在,并且@alistaire感谢您的共享。我广泛使用dplyr包,甚至没有注意到它已经在那里了。R经验法则-如果您使用
    eval
    assign
    parse
    。。。。不要…:-)此功能已经存在,并且@alistaire感谢您的共享。我广泛使用dplyr包,甚至没有注意到它已经在那里了。
    row.names(data) <- NULL
    
    data <- data[, c(ncol(data):(ncol(data) - 1))]