0 r
我有两个数据框,我想将一个数据框的内容与另一个数据框进行匹配,为此我使用以下函数:
t <- read.csv("F:/M.Tech/Semester4/Thesis/Code/Book1.csv")
s <- read.csv("F:/M.Tech/Semester4/Thesis/Code/a4.csv")
x <- nrow(s)
y <- nrow(t)
for(i in 1:x)
for(j in 1:y)
ifelse (match(s[i,2], t[j,1]), s[i,9] <- t[j,2] , s[i,9] <- 0)
Run Code Online (Sandbox Code Playgroud)
对于此代码,当内容匹配时,它就可以正常工作。但 else 部分返回 NA。我怎样才能将0分配给所有不匹配的地方。我得到的结果是:
# word count word tf score word robability log values TFxIDF score Keyword Probability
# yemen 380 yemen 1 0.053938964 2.919902172 2.919902172 NA
# strikes 116 strikes 0.305263158 0.016465578 4.106483233 1.25355804 0.5
# deadly 105 deadly 0.276315789 0.014904187 4.206113074 1.162215455 0.7
# new 88 new 0.231578947 0.012491128 4.38273661 1.014949531 NA
Run Code Online (Sandbox Code Playgroud)
而不是NA. 我想在那里存储 0 。
问题 1: ifelse根据测试条件返回两个值之一。它不是根据条件执行代码片段一或代码片段二的流量控制函数。
这是对的:
my_var <- ifelse(thing_to_test, value_if_true, value_if_false)
Run Code Online (Sandbox Code Playgroud)
这是错误的,在 R 中没有意义
ifelse(thing_to_test, my_var <- value_if_true, my_var <- value_if_false)
Run Code Online (Sandbox Code Playgroud)
问题2:确保thing_to_test是一个逻辑表达式。
将这些东西放在一起,您可以看到您应该遵循 Richard Scriven 作为上面评论留下的说明
| 归档时间: |
|
| 查看次数: |
4671 次 |
| 最近记录: |