首页 > 解决方案 > r - 获取用户输入并使用“for 循环”进行分配

问题描述

我有以下代码从用户那里获取关键字,以便我可以搜索 word_vectors 数据库:

theme_terms = lemmatize_words(scan(strip.white = TRUE, sep = '\n', what = character()))

我想使用以下作业中提供的单词,但用户可以输入任意数量的单词,不幸的是我当前的作业是静态的。

result = word_vectors[theme_terms[1], , drop = F] + word_vectors[theme_terms[2], , drop = F]

for loop我想用与用户输入一样多的单词重新创建上述语句。

我尝试了以下方法:

a) 不起作用,因为我试图将非数字参数绑定到二元运算符

for(i in 1:length(theme_terms)){
  temp =  word_vectors[theme_terms[i], , drop = F] 
  result = result + temp
}

b)不能作为字符串工作,我还必须在末尾删除字符串标记和额外的 +

for(i in 1:length(theme_terms)){
  temp = paste0(paste0("word_vectors[", theme_terms[i],", , drop = F] + "))
  result = paste(result, temp)
}

有什么建议么?谢谢你。

编辑。

word_vectors 是一个值矩阵,可以如下再现:

terms = c("cancer", "blood", "machine")
v1 = c(0.002, 0.313, 0.1313)
v2 = c(0.23, 0.14, 0.155)
v3 = c(0.141, 0.41, 0.125)

word_vectors = as.matrix(data.frame(terms, v1, v2, v3))

标签: r

解决方案


使用for循环我们可以初始化一个list用于存储输出

out <- vector('list', length(theme_terms))
for(i in seq_along(theme_terms)) {
    out[[i]] <- word_vectors[theme_terms[i], , drop = FALSE]
}

推荐阅读