【发布时间】:2016-05-05 04:39:31
【问题描述】:
菜鸟问题 - 提前感谢您的耐心...
我有一个数据框:
vals <- c(1,1,1,1)
testdf <- data.frame("var1"=vals, "var2"=vals, "var3"=vals)
我有一个变量名的字符向量:
varnames <- c("var1", "var2")
这是一个字符向量 b/c 我用它在脚本前面生成一个公式。
我想对数据框进行子集化,以便排除 varnames 中的变量,例如
newDF <- subset(df, select=-varnames)
这会产生错误,因为subset 需要名称而不是字符。所以,我用lapply把字符改成名字:
varnames <- lapply(varnames, as.name)
这个 lapply 函数的结果是一个命名 (?) 和嵌套 (?) 列表。
[[1]]
var1
[[2]]
var2
[[3]]
var3
这就是我迷路的地方(我觉得 Mugatu 服用了疯狂的药丸……这会让其他人感到困惑吗!?)。我可以看到每个值都已正确地从字符更改为名称,但它位于这个奇怪的嵌套结构中 - 所以当我尝试子集时,我得到一个错误。
我尝试了各种解决 unnest 和 unname 的方法,但都没有成功。这一定是我想念的容易的东西。
作为奖励 - 有人能告诉我为什么 lapply 返回这个嵌套的命名列表而不是简单的向量很有用吗?例如,它似乎与 Python 非常不同。谢谢。
【问题讨论】:
标签: r