首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用if语句添加变量

使用if语句添加变量
EN

Stack Overflow用户
提问于 2014-04-08 19:59:26
回答 2查看 75关注 0票数 0

我有一个csv文件包含受训人员的名字,一个csv文件包含一个出版物列表,包括一个定义作者姓名的变量。如果出版物中的作者名称与培训人员文件中包含的任何受训人员名称(“peep”)匹配,则我希望R将一个变量添加到发布数据中,其中包含一个虚拟变量。下面的代码不适用于我,我也不知道为什么。我收到的错误是“对象”--我找不到。我做错了吗?谢谢!

代码语言:javascript
复制
publications <- read.csv("publications.csv", header = TRUE, stringsAsFactors = FALSE)
trainees <- read.csv("TraineeRoster.csv", header = TRUE, stringsAsFactors = FALSE)

peeps <- trainee$LastName

publications["TraineePub"]
for (i in 1:nrow(publications)) {
    if (publications$AuthorLast[i] == peeps) {
        publications$TraineePub[i]
    } else {
        publications$TraineePub[i]
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-08 20:11:49

你可以试试这个。由于您的示例不可复制(请参阅hereherehere),所以我提供了一些数据。

代码语言:javascript
复制
set.seed(123)
publications <- data.frame(AuthorLast = sample(letters[1:10]), TraineePub = "no")
peeps <- letters[1:5]

publications$TraineePub[publications$AuthorLast %in% peeps] <- "yes"
publications

#    AuthorLast TraineePub
# 1           c        yes
# 2           h         no
# 3           d        yes
# 4           g         no
# 5           f         no
# 6           a        yes
# 7           j         no
# 8           i         no
# 9           b        yes
# 10          e        yes
票数 0
EN

Stack Overflow用户

发布于 2014-04-08 20:12:34

您可能应该阅读一些R教程,因为除了阅读原始表之外,您的代码不会做任何事情。代码应该是这样的。

代码语言:javascript
复制
publications <- read.csv("publications.csv", header = TRUE, stringsAsFactors = FALSE)
trainees <- read.csv("TraineeRoster.csv", header = TRUE, stringsAsFactors = FALSE)
peeps <- trainee$LastName

publications$IsTrainee = 1*(publications$AuthorLast %in% peeps & publications$AuthorFirst %in% trainee$FirstName)

write.csv(publications,file='PublicationsTrainee.csv')

不过,上面的代码有一些错误:

publications["TraineePub"]什么也不做。您可以添加逗号以尝试引用名为"TraineePub“的行或列,但我不知道该变量是否存在。

publications$TraineePub[i]调用一个值,但是它不会对它做任何事情(除非调用print,它将打印该值)。

编辑:此外,您应该尽量避免使用for循环。学习使用apply或仅使用向量操作(例如,c(1,2,3,4,5)+c(2,0,3,1,3)相当于c(3,2,6,5,8))

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22946982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档