R 向数据帧添加新列的函数
我需要一个函数,它向数据帧R 向数据帧添加新列的函数,r,R,我需要一个函数,它向数据帧df添加一个新列(具有常量值)。到目前为止,我的尝试是: f = function(df, col.name, col.value){ df$col.name = col.value print(df) } 典型的输入是: f(df, "New column", NA) 这将给我一个值为NA的新列,但是,它将被命名为col.name 非常感谢您的帮助。f=函数(df,col.name,col.value){ f = function(df, col.nam
df
添加一个新列(具有常量值)。到目前为止,我的尝试是:
f = function(df, col.name, col.value){
df$col.name = col.value
print(df)
}
典型的输入是:
f(df, "New column", NA)
这将给我一个值为NA的新列,但是,它将被命名为col.name
非常感谢您的帮助。f=函数(df,col.name,col.value){
f = function(df, col.name, col.value){
df[[col.name]] <- col.value
print(df)
}
df[[col.name]R为这类事情内置了函数,即$test
a b
1 1 4
2 2 5
3 3 6
>`$f如果您知道新列的名称,可以执行以下操作:
test <- data.frame(a=1:3,b=4:6)
test$c = c(1:3)
测试函数应该返回data.frame还是在父环境中修改它?另外,我认为当您在col.name中提供现有列时,它应该警告您。我还没有使用环境,因为我刚刚在R中开始,所以我想我只是在寻找返回data frame的函数。您选择了错误的答案“$你对我如何学习‘语言的这一方面’有什么建议吗?干杯!出于兴趣,你知道我的尝试失败的原因吗?正如所指出的,最好只返回df
。如果你使用print(df)
,该函数仍将返回df
,以便您可以分配它,但无论发生什么情况,即使您分配了新的data.frame,也会打印出来。大多数人都会同意这不是一个理想的功能。如果函数只是返回df
,则如果您使用该命令运行,新的data.frame仍将打印出来一个交互式会话的行,并且输出未分配给任何对象。@user32259您的尝试无效,因为按$
索引无法(轻松地)进行使用一个变量的内容作为索引。我现在只是在玩这个。但它的功能似乎类似于transform
,是的。它直接类似于复制data.frame,添加一列,然后返回该副本。"$@thelatemail我看到了。那么,当$@jazzurro出现时,它有时可以方便地编写特定的速记脚本,在其中返回整个对象,如class@thelatemail明白了。这是有道理的。我今天试着用一些虚拟数据帧来使用这个函数。谢谢你的教训。今天我从你那里学到了两件重要的事情Y
> test <- data.frame(a=1:3,b=4:6)
> test
a b
1 1 4
2 2 5
3 3 6
> `$<-`(test,"new_column",NA)
a b new_column
1 1 4 NA
2 2 5 NA
3 3 6 NA
> f <- `$<-`
> f(test,"new_column",NA)
a b new_column
1 1 4 NA
2 2 5 NA
3 3 6 NA
test <- data.frame(a=1:3,b=4:6)
test$c = c(1:3)