在R中访问函数中的变量名
我定义了以下函数:在R中访问函数中的变量名,r,R,我定义了以下函数: plot_test <- function(data) { columns <- names(data) for (column in columns) { p <- ggplot(data, aes(x=get(column), y=cluster)) p <- p + geom_jitter(position = position_jitter(height = .1, width=0.1)) show(p) }
plot_test <- function(data) {
columns <- names(data)
for (column in columns) {
p <- ggplot(data, aes(x=get(column), y=cluster))
p <- p + geom_jitter(position = position_jitter(height = .1, width=0.1))
show(p)
}
}
我收到以下错误消息:
Error in get(column) : object 'column' not found
我没有在for循环中适当地确定列变量的范围。任何帮助都将不胜感激。谢谢。使用
aes\u string
而不是get
将列名传递给ggplot:
for (column in columns) {
p <- ggplot(data, aes_string(x=column, y="cluster"))
p <- p + geom_jitter(position = position_jitter(height = .1, width=0.1))
show(p)
}
for(列中的列){
p将get
中的列用引号括起来,例如get(“列”)
@SimonO101:这不起作用-get(“列”)
将被执行以查找数据
数据框中名为列
的列。@DavidRobinson我在键入后意识到了这一点。我首先评估了语法上的错误。不过,我+1您的解释非常清晰简洁。
Error in get(column) : object 'column' not found
for (column in columns) {
p <- ggplot(data, aes_string(x=column, y="cluster"))
p <- p + geom_jitter(position = position_jitter(height = .1, width=0.1))
show(p)
}