2014-09-30 64 views
1

R新手我試圖從數據框中的每一行創建一個向量,並將該向量命名爲數據幀中的位置。樣本數據:R循環數據幀並從每一行創建一個向量

a <- read.table(text='keyword1  keyword2 
    1  "hello"  "goodbye" 
    2  "foo"  "y"', header=TRUE) 

每一行應該成爲一個字符串如:

name1 <- c("hello", "goodbye") 
name2 <- c("foo", "y") 

我想這樣的事情,但它也不能令人信服:

for (i in 1:length(a)) { 
name <- a[i,1]; 
names <- c(name, a[i,2]); 

任何幫助不勝感激!

回答

1

這裏的另一種選擇

foo <- function(i) sapply(unname(a), as.character)[i,] 

list2env(
    setNames(Map(foo, 1:nrow(a)), gsub("keyword", "name", names(a))), 
    .GlobalEnv 
) 

name1 
# [1] "hello" "goodbye" 
name2 
# [1] "foo" "y" 
+0

謝謝!你能評論這是如何工作的嗎? – lmcshane 2014-10-01 17:18:15

2

這裏有一個辦法:

> rows <- sapply(1:2, function(i) strsplit(paste(a[i,1], a[i,2]), " ")) 
> names(rows) <- c("name1", "name2") 
> list2env(rows, envir = .GlobalEnv) 
# let's see the output: 
> name1 
[1] "hello" "goodbye" 
> name2 
[1] "foo" "y" 
相關問題