簡體   English   中英

R:如何在data.frame的行上使用apply並獲取$ column_name?

[英]R: How can I use apply on rows of a data.frame and get out $column_name?

我正在嘗試使用以下示例訪問$ a:

df<-data.frame(a=c("x","x","y","y"),b=c(1,2,3,4))

> df
  a b
1 x 1
2 x 2
3 y 3
4 y 4

test_fun <- function (data.frame_in) {
    print (data.frame_in[1])
    }

如果我使用第一列的索引,我現在可以訪問$ a:

apply(df,1,test_fun)

  a 
"x" 
  a 
"x" 
  a 
"y" 
  a 
"y" 
[1] "x" "x" "y" "y"

但我無法使用$表示法訪問列$ a:錯誤:“$運算符對原子向量無效”

test_fun_2 <- function (data.frame_in) {
    print (data.frame_in$a)
    }

>apply(df, 1, test_fun_2)
Error in data.frame_in$a : $ operator is invalid for atomic vectors

這不可能嗎?

你可以使用adply從plyr包代替:

library(plyr)
adply(df, 1, function (data.frame_in) print(data.frame_in$a))

因為data.frame.in不是data.frame:

apply(df, 1, function(v){print(class(v))})

但您可以使用以下命令訪問命名元素:

test_fun_2 <- function (data.frame_in) {
+     print (data.frame_in['a'])}

因為apply更改函數中的數據類型:

> apply(df, 1, class)
[1] "character" "character" "character" "character"

> apply(df, 1, colnames)
NULL

由於沒有列名,因此無法使用$運算符引用這些值。

apply文件:

如果X不是數組但具有維度屬性,則應用嘗試通過as.matrix將其強制轉換為數組(如果它是二維的(例如,數據幀)或通過as.array)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM