2016-02-11 81 views
2
number<-list(matrix(1:6,2,3),matrix(2:7,2,3)) 
fruit<-c("apple","banana","pear","orange","berry","grape","watermelon") 

目的更换:从列表中选择“数字”的前两列,然后在“果”的名称替换相关的号码。在列表中选择列,并与名称

我的代码如下。

result<-lapply(number,function(a) {fruit[a[,c(1,2)]]}) 

但结果不是我想要的。

[[1]] 
[1] "apple" "banana" "pear" "orange" 

[[2]] 
[1] "banana" "pear" "orange" "berry" 

虽然我的预期结果如下;

[[1]] 
[1] "apple"  "pear" 
[2] "banana" "orange" 

[[2]] 
[1] "banana" "orange" 
[2] "pear" "berry" 

你能帮我解答,谢谢!

+1

你正在寻找'lapply(号码,函数(X){ X [,-3] < - 果[X [,-3]]; X [,-3] } )'? –

+0

或更有趣的'lapply(数字,函数(x)\ dim \ - \'(fruit [x [,-3]],dim(x [,-3])))' –

+0

@RichardScriven谢谢! – lightsnail

回答

2

它给你正确的答案,但它矢量化你的矩阵。尝试:

result <- lapply(number,function(a) {matrix(fruit[a[,c(1,2)]],nrow=nrow(a))}) 
+0

“诺罗”真的很有帮助!非常感谢! – lightsnail