R 用向量替换data.table的一部分
我有一个数据表,可以通过R 用向量替换data.table的一部分,r,replace,data.table,R,Replace,Data.table,我有一个数据表,可以通过 top_m_dt = data.table(future_fip = c(102, 104, 503), model = c("model_1", "model_2", "model_3"), time_period = c("F1", "F2", "F3"), emission = c("emission_1", "emission_2", "emission_
top_m_dt = data.table(future_fip = c(102, 104, 503),
model = c("model_1", "model_2", "model_3"),
time_period = c("F1", "F2", "F3"),
emission = c("emission_1", "emission_2", "emission_3"),
top_1_fip = c(666, 666, 666),
top_2_fip = c(666, 666, 666),
top_3_fip = c(666, 666, 666))
我想替换第1行和列top\u 1\u fip
,top\u 2\u fip
,top\u 3\u fip
对于一组值,让我们假设c(10,20,30)
以下各项均无效:
top_m_dt[1, c("top_1_fip", "top_2_fip", "top_3_fip")] <-
as.numeric(analog_dat_F1$analog_NNs_county[1:3])`
它们全部替换所有三个位置中的
10
。有什么建议吗?data.table
语法有点不同,不是所有在数据帧上工作的东西都能在data.table上工作。在这种情况下,要替换特定行和列中的值,可以使用as.list
library(data.table)
top_m_dt[1, c("top_1_fip", "top_2_fip", "top_3_fip") := as.list(c(10, 20, 30))]
top_m_dt
# future_fip model time_period emission top_1_fip top_2_fip top_3_fip
#1: target_fip model_n F1 emission 10 20 30
#2: target_fip model_n F2 emission 666 666 666
#3: target_fip model_n F3 emission 666 666 666
您的示例代码没有运行---您的意思是要将目标fip
和模型n
和排放
值都用引号括起来吗?对不起,最后一个括号没有用{code}模式括起来!好的,这些排放物在我的电脑里有值!所以,是的,让我们在上面加上引号。对不起,我在列表
之前缺少as.
。这狗屎对一切都很敏感!
top_m_dt[1, (c("top_1_fip", "top_2_fip", "top_3_fip")):=
analog_dat_F1$analog_NNs_county[1:3]] `
library(data.table)
top_m_dt[1, c("top_1_fip", "top_2_fip", "top_3_fip") := as.list(c(10, 20, 30))]
top_m_dt
# future_fip model time_period emission top_1_fip top_2_fip top_3_fip
#1: target_fip model_n F1 emission 10 20 30
#2: target_fip model_n F2 emission 666 666 666
#3: target_fip model_n F3 emission 666 666 666