【发布时间】:2016-08-05 19:33:24
【问题描述】:
我有一个数据框。我需要搜索列“a”,如果“a”等于“foo”,则“b”列等于“found”
a <- c("foo", "bar", "baz", "foo")
b <- c(0, 0, 0, 0)
df <- data.frame(a, b)
f <- function (x){
if (x["a"] == "foo"){
x["b"] <- "confirm"
}
}
result <- apply(df, 1, f)
预期的结果是
a b
"foo" "confirm"
"bar" 0
"baz" 0
"foo" "confirm"
但是当我这样做时,结果返回:
[[1]]
[1] "confirm"
[[2]]
NULL
[[3]]
NULL
[[4]]
[1] "confirm"
并且 View(result) 给出错误: 视图中的错误:参数暗示不同的行数:1、0
是否为数据框添加了另一个维度?
【问题讨论】:
-
一个函数需要
return(x)结尾。 -
我添加了
return(x),但结果我的行和列被转置了。 -
是的,这是使用
apply的负面影响。人们通常只是在最后使用t()来反转它或尽量避免使用apply。 -
谢谢@Frank,转置为我完成了。并感谢您提出退货方式。