【发布时间】:2016-06-28 06:04:01
【问题描述】:
数据:
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")
目标: 创建一个函数,该函数将输入数据框名称和(新)变量名称。 该函数将:
- 根据数据框的行名创建一个新变量
- 删除行名
- 对变量重新排序,以便新创建的 列是第一列
挑战: 我被困在第一步。
我已经在 Internet 和 stackoverflow 上搜索了可以提供帮助的 sn-ps 代码,尽管它无法正常工作,但我已经设法敲定了一些东西。 我尝试了什么:
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))
}
结果:
- 什么也没发生(甚至没有错误消息)
- 已创建行名称的字符向量(而不是数据框中的变量)
感谢您对本文的帮助和关注。
【问题讨论】:
-
R 经验法则 - 如果您曾经使用过
evalassignparse.... 不要。 :-) -
@alistaire 感谢您的分享。我广泛使用 dplyr 包,甚至没有注意到它已经在里面了。