我想知道為什么我不能用 for 回圈復制第一個示例。更具體地說,您可以看到,如果我們嘗試使用 for 回圈執行邏輯,則第二行和第三行不會填充新值。為什么是這樣?
復制示例:
df <- data.table(name=c('a', 'b', 'c'))
df[name=='a', x:=1]
df[name=='b', x:=2]
df[name=='c', x:=3]
df
####
df <- data.table(name=c('a', 'b', 'c'))
values <- unique(df$name)
for (x in 1:3) {
df[name==values[x], x:=x]
}
df
我的輸出:
> df <- data.table(name=c('a', 'b', 'c'))
> df[name=='a', x:=1]
> df[name=='b', x:=2]
> df[name=='c', x:=3]
> df
name x
1: a 1
2: b 2
3: c 3
> df <- data.table(name=c('a', 'b', 'c'))
> values <- unique(df$name)
> for (x in 1:3) {
df[name==values[x], x:=x]
}
> df
> df
name x
1: a 1
2: b NA
3: c NA
uj5u.com熱心網友回復:
這是一個范圍問題,回圈中的第一步定義了x,后面的步驟使用這個定義(等于NA)。
如果你使用i而不是x,它的作業原理:
for (i in 1:3) {
df[name==values[i], x:=i]
}
df
Index: <name>
name x
<char> <int>
1: a 1
2: b 2
3: c 3
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/461256.html
上一篇:Dart-檢測串列中何時在下一個索引中存在“假”和“真”
下一篇:如何從for回圈轉換為“過濾器”
