R 使用另一个datatable中的值更新datatable列

R 使用另一个datatable中的值更新datatable列,r,datatable,assign,R,Datatable,Assign,考虑以下两个数据表: df1=data.table(a=1:3, b=4:6, c=7:9) df2=data.table(a=c(T,F,T), c=c(F,F,T), d=c(T,F,F)) 用df2中的相应值更新df1的a和c列的最佳方法是什么 df1[,c(“a”,“c”),with=FALSE]和df2[,c(“a”,“c”),with=FALSE]返回每个数据表的相应部分 但是df1[,c(“a”,“c”),with=FALSE]这里有另一个解决方案: library(tidyve

考虑以下两个数据表:

df1=data.table(a=1:3, b=4:6, c=7:9)
df2=data.table(a=c(T,F,T), c=c(F,F,T), d=c(T,F,F))
df2
中的相应值更新
df1
a
c
列的最佳方法是什么

df1[,c(“a”,“c”),with=FALSE]
df2[,c(“a”,“c”),with=FALSE]
返回每个数据表的相应部分


但是
df1[,c(“a”,“c”),with=FALSE]这里有另一个解决方案:

library(tidyverse)

df1 <- tibble(a = 1:3, b = 4:6, c = 7:9)
df2 <- tibble(a = c(T,F,T), c = c(F,F,T), d = c(T,F,F))

bind_cols(df1, df2) %>% 
  transmute(a = a1, b, c = c1)
库(tidyverse)

df1注意,您正在尝试使用另一种不同类型(整数与逻辑)的列更新列。如果您打算将
TRUE
设为1,将
FALSE
设为0,那么
df1*df2
也足够了,您可以使用
set
nm1您是对的!也许我没有提供一个很好的例子,但我正在寻找一个适用于任何可能的df2值的解决方案?在这种情况下,首先需要将“df1”中的列类型更改为与“df2”相同的类型,然后执行
集(df1,I=NULL,j=j,value=df2[[j]])
@akrun-
df1[,c(“a”,“c”):=df2[,c(“a”,“c”)]
似乎适合我。