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)